Imported Upstream version 3.6.1~20160216
authorGert Wollny <gw.fossdev@gmail.com>
Sat, 9 Apr 2016 12:18:00 +0000 (12:18 +0000)
committerGert Wollny <gw.fossdev@gmail.com>
Sat, 9 Apr 2016 12:18:00 +0000 (12:18 +0000)
871 files changed:
CMake/dcmtkPrepare.cmake
CMake/osconfig.h.in
CMakeLists.txt
COPYRIGHT
VERSION
config/Makefile.def.in
config/Makefile.in
config/arith.cc
config/configure
config/configure.in
config/docs/macros.txt
config/include/dcmtk/config/osconfig.h.in
dcmdata/apps/Makefile.dep
dcmdata/apps/dcm2xml.cc
dcmdata/apps/dcmdump.cc
dcmdata/apps/dcmgpdir.cc
dcmdata/apps/dump2dcm.cc
dcmdata/apps/mdfdsman.h
dcmdata/apps/xml2dcm.cc
dcmdata/data/dicom.dic
dcmdata/docs/dcm2xml.man
dcmdata/docs/dump2dcm.man
dcmdata/include/dcmtk/dcmdata/dcbytstr.h
dcmdata/include/dcmtk/dcmdata/dcdatutl.h
dcmdata/include/dcmtk/dcmdata/dcddirif.h
dcmdata/include/dcmtk/dcmdata/dcdeftag.h
dcmdata/include/dcmtk/dcmdata/dcdirrec.h
dcmdata/include/dcmtk/dcmdata/dcelem.h
dcmdata/include/dcmtk/dcmdata/dcitem.h
dcmdata/include/dcmtk/dcmdata/dcmetinf.h
dcmdata/include/dcmtk/dcmdata/dcobject.h
dcmdata/include/dcmtk/dcmdata/dcsequen.h
dcmdata/include/dcmtk/dcmdata/dctk.h
dcmdata/include/dcmtk/dcmdata/dcuid.h
dcmdata/include/dcmtk/dcmdata/dcvr.h
dcmdata/include/dcmtk/dcmdata/dcvrlo.h
dcmdata/include/dcmtk/dcmdata/dcvrlt.h
dcmdata/include/dcmtk/dcmdata/dcvrobow.h
dcmdata/include/dcmtk/dcmdata/dcvrod.h
dcmdata/include/dcmtk/dcmdata/dcvrof.h
dcmdata/include/dcmtk/dcmdata/dcvrol.h [new file with mode: 0644]
dcmdata/include/dcmtk/dcmdata/dcvrpn.h
dcmdata/include/dcmtk/dcmdata/dcvrsh.h
dcmdata/include/dcmtk/dcmdata/dcvrst.h
dcmdata/include/dcmtk/dcmdata/dcvruc.h
dcmdata/include/dcmtk/dcmdata/dcvrul.h
dcmdata/include/dcmtk/dcmdata/dcvrulup.h
dcmdata/include/dcmtk/dcmdata/dcvrut.h
dcmdata/include/dcmtk/dcmdata/dcxfer.h
dcmdata/libi2d/Makefile.dep
dcmdata/libsrc/CMakeLists.txt
dcmdata/libsrc/Makefile.dep
dcmdata/libsrc/Makefile.in
dcmdata/libsrc/dcdatset.cc
dcmdata/libsrc/dcdatutl.cc
dcmdata/libsrc/dcddirif.cc
dcmdata/libsrc/dcdictbi.cc
dcmdata/libsrc/dcdirrec.cc
dcmdata/libsrc/dcelem.cc
dcmdata/libsrc/dcfilefo.cc
dcmdata/libsrc/dcitem.cc
dcmdata/libsrc/dcmetinf.cc
dcmdata/libsrc/dcpxitem.cc
dcmdata/libsrc/dcsequen.cc
dcmdata/libsrc/dcuid.cc
dcmdata/libsrc/dcvr.cc
dcmdata/libsrc/dcvrfd.cc
dcmdata/libsrc/dcvrfl.cc
dcmdata/libsrc/dcvrod.cc
dcmdata/libsrc/dcvrof.cc
dcmdata/libsrc/dcvrol.cc [new file with mode: 0644]
dcmdata/libsrc/dcvrul.cc
dcmdata/tests/CMakeLists.txt
dcmdata/tests/Makefile.dep
dcmdata/tests/Makefile.in
dcmdata/tests/tchval.cc
dcmdata/tests/telemlen.cc
dcmdata/tests/tests.cc
dcmdata/tests/tvrcomp.cc
dcmdata/tests/tvrol.cc [new file with mode: 0644]
dcmfg/include/dcmtk/dcmfg/fgderimg.h
dcmfg/include/dcmtk/dcmfg/fgfracon.h
dcmfg/include/dcmtk/dcmfg/fgframevoilut.h
dcmfg/include/dcmtk/dcmfg/fgpixmsr.h
dcmfg/include/dcmtk/dcmfg/fgplanposvol.h
dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
dcmfg/libsrc/Makefile.dep
dcmfg/libsrc/fgderimg.cc
dcmfg/libsrc/fgfracon.cc
dcmfg/libsrc/fgframevoilut.cc
dcmfg/libsrc/fgimagedatatype.cc
dcmfg/libsrc/fginterface.cc
dcmfg/libsrc/fgpixmsr.cc
dcmfg/libsrc/fgplanposvol.cc
dcmfg/libsrc/fgrealworldvaluemapping.cc
dcmfg/libsrc/fgusimagedescription.cc
dcmimage/apps/Makefile.dep
dcmimage/libsrc/Makefile.dep
dcmimgle/apps/Makefile.dep
dcmimgle/include/dcmtk/dcmimgle/dibaslut.h
dcmimgle/include/dcmtk/dcmimgle/diovpln.h
dcmimgle/include/dcmtk/dcmimgle/dipxrept.h
dcmimgle/libsrc/Makefile.dep
dcmimgle/libsrc/diimage.cc
dcmiod/CMakeLists.txt
dcmiod/Makefile.in
dcmiod/include/dcmtk/dcmiod/cielabutil.h [new file with mode: 0755]
dcmiod/include/dcmtk/dcmiod/iodmacro.h
dcmiod/include/dcmtk/dcmiod/iodutil.h
dcmiod/include/dcmtk/dcmiod/modenhusimage.h
dcmiod/include/dcmtk/dcmiod/modequipment.h
dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
dcmiod/include/dcmtk/dcmiod/modimagepixel.h
dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
dcmiod/libsrc/CMakeLists.txt
dcmiod/libsrc/Makefile.dep
dcmiod/libsrc/Makefile.in
dcmiod/libsrc/cielabutil.cc [new file with mode: 0755]
dcmiod/libsrc/iodmacro.cc
dcmiod/libsrc/iodutil.cc
dcmiod/libsrc/modenhusimage.cc
dcmiod/libsrc/modenhusseries.cc
dcmiod/libsrc/modequipment.cc
dcmiod/libsrc/modgeneralimage.cc
dcmiod/libsrc/modgeneralseries.cc
dcmiod/libsrc/modimagepixel.cc
dcmiod/libsrc/modmultiframedimension.cc
dcmiod/libsrc/modsynchronization.cc
dcmiod/tests/CMakeLists.txt [new file with mode: 0644]
dcmiod/tests/Makefile.dep [new file with mode: 0644]
dcmiod/tests/Makefile.in
dcmiod/tests/tcielabutil.cc [new file with mode: 0644]
dcmiod/tests/tests.cc [new file with mode: 0644]
dcmjpeg/apps/Makefile.dep
dcmjpeg/docs/dcmmkdir.man
dcmjpeg/libsrc/Makefile.dep
dcmjpls/apps/Makefile.dep
dcmjpls/libcharls/Makefile.dep
dcmjpls/libcharls/header.cc
dcmjpls/libsrc/Makefile.dep
dcmnet/apps/Makefile.dep
dcmnet/apps/movescu.cc
dcmnet/docs/storescp.man
dcmnet/etc/storescp.cfg
dcmnet/etc/storescu.cfg
dcmnet/include/dcmtk/dcmnet/dccftsmp.h
dcmnet/include/dcmtk/dcmnet/diutil.h
dcmnet/include/dcmtk/dcmnet/dstorscu.h
dcmnet/include/dcmtk/dcmnet/scp.h
dcmnet/include/dcmtk/dcmnet/scu.h
dcmnet/libsrc/Makefile.dep
dcmnet/libsrc/assoc.cc
dcmnet/libsrc/dccftsmp.cc
dcmnet/libsrc/dcmtrans.cc
dcmnet/libsrc/diutil.cc
dcmnet/libsrc/dstorscu.cc
dcmnet/libsrc/dul.cc
dcmnet/libsrc/dulextra.cc
dcmnet/libsrc/dulfsm.cc
dcmnet/libsrc/dulparse.cc
dcmnet/libsrc/scp.cc
dcmnet/libsrc/scu.cc
dcmnet/tests/Makefile.dep
dcmpstat/apps/Makefile.dep
dcmpstat/libsrc/Makefile.dep
dcmpstat/tests/Makefile.dep
dcmpstat/tests/msgserv.cc
dcmqrdb/apps/Makefile.dep
dcmqrdb/docs/dcmqrscp.man
dcmqrdb/libsrc/Makefile.dep
dcmqrdb/libsrc/dcmqrdbi.cc
dcmrt/apps/Makefile.dep
dcmrt/include/dcmtk/dcmrt/drmimage.h
dcmrt/include/dcmtk/dcmrt/drtdose.h
dcmrt/include/dcmtk/dcmrt/drtimage.h
dcmrt/include/dcmtk/dcmrt/drtionpl.h
dcmrt/include/dcmtk/dcmrt/drtiontr.h
dcmrt/include/dcmtk/dcmrt/drtplan.h
dcmrt/include/dcmtk/dcmrt/drtstrct.h
dcmrt/include/dcmtk/dcmrt/drttreat.h
dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtads.h
dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
dcmrt/include/dcmtk/dcmrt/seq/drtags.h
dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
dcmrt/include/dcmtk/dcmrt/seq/drtass.h
dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
dcmrt/include/dcmtk/dcmrt/seq/drtbss.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtces.h
dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdias.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtds.h
dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
dcmrt/include/dcmtk/dcmrt/seq/drteas.h
dcmrt/include/dcmtk/dcmrt/seq/drtecs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtes.h
dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
dcmrt/include/dcmtk/dcmrt/seq/drtians.h
dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
dcmrt/include/dcmtk/dcmrt/seq/drticps.h
dcmrt/include/dcmtk/dcmrt/seq/drtics.h
dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
dcmrt/include/dcmtk/dcmrt/seq/drtois.h
dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
dcmrt/include/dcmtk/dcmrt/seq/drtos.h
dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
dcmrt/include/dcmtk/dcmrt/seq/drtqds.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtras.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
dcmrt/include/dcmtk/dcmrt/seq/drtris.h
dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtss.h
dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
dcmrt/include/dcmtk/dcmrt/seq/drttts.h
dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtws.h
dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
dcmrt/libsrc/CMakeLists.txt
dcmrt/libsrc/Makefile.dep
dcmrt/libsrc/Makefile.in
dcmrt/libsrc/drmdose.cc
dcmrt/libsrc/drtaadcs.cc
dcmrt/libsrc/drtadcs.cc
dcmrt/libsrc/drtads.cc
dcmrt/libsrc/drtafs.cc
dcmrt/libsrc/drtags.cc
dcmrt/libsrc/drtajcs.cc
dcmrt/libsrc/drtarics.cc
dcmrt/libsrc/drtas1.cc
dcmrt/libsrc/drtas5.cc
dcmrt/libsrc/drtas6.cc
dcmrt/libsrc/drtas7.cc
dcmrt/libsrc/drtass.cc
dcmrt/libsrc/drtbads.cc
dcmrt/libsrc/drtbas.cc
dcmrt/libsrc/drtbcps.cc
dcmrt/libsrc/drtbl2.cc
dcmrt/libsrc/drtbl5.cc
dcmrt/libsrc/drtbldls.cc
dcmrt/libsrc/drtbldps.cc
dcmrt/libsrc/drtblds1.cc
dcmrt/libsrc/drtblds5.cc
dcmrt/libsrc/drtblds6.cc
dcmrt/libsrc/drtbldts.cc
dcmrt/libsrc/drtbrcss.cc
dcmrt/libsrc/drtbrdrs.cc
dcmrt/libsrc/drtbrs.cc
dcmrt/libsrc/drtbs.cc
dcmrt/libsrc/drtbss.cc [new file with mode: 0644]
dcmrt/libsrc/drtbvcps.cc
dcmrt/libsrc/drtcbars.cc
dcmrt/libsrc/drtccs.cc
dcmrt/libsrc/drtcctus.cc
dcmrt/libsrc/drtcdrs.cc
dcmrt/libsrc/drtces.cc
dcmrt/libsrc/drtchs.cc
dcmrt/libsrc/drtcims.cc
dcmrt/libsrc/drtcis.cc
dcmrt/libsrc/drtcncs.cc
dcmrt/libsrc/drtcos.cc
dcmrt/libsrc/drtcpas.cc
dcmrt/libsrc/drtcpis.cc [new file with mode: 0644]
dcmrt/libsrc/drtcps.cc
dcmrt/libsrc/drtcs.cc
dcmrt/libsrc/drtcsas.cc
dcmrt/libsrc/drtcshs.cc
dcmrt/libsrc/drtcsis.cc
dcmrt/libsrc/drtcss.cc
dcmrt/libsrc/drtdcs.cc
dcmrt/libsrc/drtdias.cc [new file with mode: 0644]
dcmrt/libsrc/drtdimcs.cc
dcmrt/libsrc/drtdimrs.cc
dcmrt/libsrc/drtdirs.cc
dcmrt/libsrc/drtdose.cc
dcmrt/libsrc/drtdrs.cc
dcmrt/libsrc/drtds.cc
dcmrt/libsrc/drtdspcs.cc
dcmrt/libsrc/drtdss.cc
dcmrt/libsrc/drtdvhs.cc
dcmrt/libsrc/drtdvrrs.cc
dcmrt/libsrc/drteas.cc
dcmrt/libsrc/drtecs.cc [new file with mode: 0644]
dcmrt/libsrc/drtes.cc
dcmrt/libsrc/drtfds.cc
dcmrt/libsrc/drtfes.cc
dcmrt/libsrc/drtfgs.cc
dcmrt/libsrc/drtfgss.cc
dcmrt/libsrc/drtfms.cc
dcmrt/libsrc/drtfsss.cc
dcmrt/libsrc/drtgas.cc
dcmrt/libsrc/drthsdrs.cc
dcmrt/libsrc/drtiais.cc
dcmrt/libsrc/drtians.cc
dcmrt/libsrc/drtiblds.cc
dcmrt/libsrc/drtibls.cc
dcmrt/libsrc/drtibs.cc
dcmrt/libsrc/drticpds.cc
dcmrt/libsrc/drticps.cc
dcmrt/libsrc/drtics.cc
dcmrt/libsrc/drtiis.cc
dcmrt/libsrc/drtimage.cc
dcmrt/libsrc/drtionpl.cc
dcmrt/libsrc/drtiontr.cc
dcmrt/libsrc/drtipiqs.cc
dcmrt/libsrc/drtircs.cc
dcmrt/libsrc/drtiseis.cc
dcmrt/libsrc/drtitts.cc
dcmrt/libsrc/drtiwps.cc
dcmrt/libsrc/drtiws.cc
dcmrt/libsrc/drtlsds.cc
dcmrt/libsrc/drtlsds6.cc
dcmrt/libsrc/drtlsds7.cc
dcmrt/libsrc/drtmacds.cc
dcmrt/libsrc/drtmas.cc
dcmrt/libsrc/drtmdrs.cc
dcmrt/libsrc/drtmls.cc
dcmrt/libsrc/drtmps.cc
dcmrt/libsrc/drtmss.cc
dcmrt/libsrc/drtmucs.cc
dcmrt/libsrc/drtoas.cc
dcmrt/libsrc/drtois.cc
dcmrt/libsrc/drtopis.cc
dcmrt/libsrc/drtos.cc
dcmrt/libsrc/drtpbcs.cc
dcmrt/libsrc/drtpcs.cc
dcmrt/libsrc/drtpcxs.cc
dcmrt/libsrc/drtpdecs.cc [new file with mode: 0644]
dcmrt/libsrc/drtpfms.cc
dcmrt/libsrc/drtpics.cc
dcmrt/libsrc/drtplan.cc
dcmrt/libsrc/drtporcs.cc
dcmrt/libsrc/drtporis.cc
dcmrt/libsrc/drtppcs.cc
dcmrt/libsrc/drtprsis.cc
dcmrt/libsrc/drtpscs.cc
dcmrt/libsrc/drtpsics.cc
dcmrt/libsrc/drtpss.cc
dcmrt/libsrc/drtpsss.cc
dcmrt/libsrc/drtpvis.cc
dcmrt/libsrc/drtqds.cc [new file with mode: 0644]
dcmrt/libsrc/drtras.cc
dcmrt/libsrc/drtrbas2.cc
dcmrt/libsrc/drtrbas8.cc
dcmrt/libsrc/drtrbls.cc
dcmrt/libsrc/drtrbos1.cc
dcmrt/libsrc/drtrbos6.cc
dcmrt/libsrc/drtrbos7.cc
dcmrt/libsrc/drtrbs2.cc
dcmrt/libsrc/drtrbs4.cc
dcmrt/libsrc/drtrbs8.cc
dcmrt/libsrc/drtrcdrs.cc
dcmrt/libsrc/drtrcos.cc
dcmrt/libsrc/drtrcps.cc
dcmrt/libsrc/drtrcs.cc
dcmrt/libsrc/drtrdros.cc
dcmrt/libsrc/drtrdrs1.cc
dcmrt/libsrc/drtrdrs6.cc
dcmrt/libsrc/drtrdrs8.cc
dcmrt/libsrc/drtrds.cc
dcmrt/libsrc/drtrecs.cc
dcmrt/libsrc/drtrfgs.cc
dcmrt/libsrc/drtrfors.cc
dcmrt/libsrc/drtrics.cc
dcmrt/libsrc/drtrims.cc
dcmrt/libsrc/drtris.cc
dcmrt/libsrc/drtrlsds.cc
dcmrt/libsrc/drtrmdrs.cc
dcmrt/libsrc/drtrms.cc
dcmrt/libsrc/drtrmss6.cc
dcmrt/libsrc/drtrmss7.cc
dcmrt/libsrc/drtrpcs.cc
dcmrt/libsrc/drtrpis.cc
dcmrt/libsrc/drtrppcs.cc
dcmrt/libsrc/drtrpphs.cc
dcmrt/libsrc/drtrpps.cc
dcmrt/libsrc/drtrppss.cc
dcmrt/libsrc/drtrps.cc
dcmrt/libsrc/drtrris1.cc
dcmrt/libsrc/drtrris6.cc
dcmrt/libsrc/drtrris9.cc
dcmrt/libsrc/drtrrms.cc
dcmrt/libsrc/drtrros.cc
dcmrt/libsrc/drtrrpcs.cc
dcmrt/libsrc/drtrrros.cc
dcmrt/libsrc/drtrrs.cc
dcmrt/libsrc/drtrrshs.cc
dcmrt/libsrc/drtrrtps.cc
dcmrt/libsrc/drtrrtps3.cc
dcmrt/libsrc/drtrrtps4.cc
dcmrt/libsrc/drtrrtps5.cc
dcmrt/libsrc/drtrscs.cc
dcmrt/libsrc/drtrsers.cc
dcmrt/libsrc/drtrses.cc
dcmrt/libsrc/drtrshs.cc
dcmrt/libsrc/drtrshs6.cc
dcmrt/libsrc/drtrshs7.cc
dcmrt/libsrc/drtrsis.cc
dcmrt/libsrc/drtrsns.cc
dcmrt/libsrc/drtrsos.cc
dcmrt/libsrc/drtrsrs.cc
dcmrt/libsrc/drtrss.cc
dcmrt/libsrc/drtrsss.cc
dcmrt/libsrc/drtrsts.cc
dcmrt/libsrc/drtrtrs2.cc
dcmrt/libsrc/drtrtrs4.cc
dcmrt/libsrc/drtrvis.cc
dcmrt/libsrc/drtrws.cc
dcmrt/libsrc/drtrwvms.cc
dcmrt/libsrc/drtscris.cc
dcmrt/libsrc/drtsdcs.cc
dcmrt/libsrc/drtsds.cc
dcmrt/libsrc/drtshds.cc
dcmrt/libsrc/drtsis.cc
dcmrt/libsrc/drtsns.cc
dcmrt/libsrc/drtspccs.cc
dcmrt/libsrc/drtspcs.cc
dcmrt/libsrc/drtss.cc
dcmrt/libsrc/drtssrs.cc
dcmrt/libsrc/drtstrct.cc
dcmrt/libsrc/drttms0.cc
dcmrt/libsrc/drttms9.cc
dcmrt/libsrc/drttreat.cc
dcmrt/libsrc/drttscds.cc
dcmrt/libsrc/drttsibs.cc
dcmrt/libsrc/drttsmds.cc
dcmrt/libsrc/drttts.cc
dcmrt/libsrc/drtvls.cc
dcmrt/libsrc/drtwps.cc
dcmrt/libsrc/drtwrs.cc
dcmrt/libsrc/drtwrsrs.cc [new file with mode: 0644]
dcmrt/libsrc/drtws.cc
dcmrt/libsrc/drtxrs.cc
dcmrt/tests/Makefile.dep
dcmseg/CMakeLists.txt
dcmseg/Makefile.in
dcmseg/apps/CMakeLists.txt [new file with mode: 0644]
dcmseg/include/dcmtk/dcmseg/segdoc.h
dcmseg/include/dcmtk/dcmseg/segment.h
dcmseg/include/dcmtk/dcmseg/segtypes.h
dcmseg/include/dcmtk/dcmseg/segutils.h
dcmseg/libsrc/Makefile.dep
dcmseg/libsrc/segdoc.cc
dcmseg/libsrc/segment.cc
dcmseg/libsrc/segtypes.cc
dcmseg/libsrc/segutils.cc
dcmseg/tests/CMakeLists.txt [new file with mode: 0644]
dcmseg/tests/Makefile.dep [new file with mode: 0644]
dcmseg/tests/Makefile.in
dcmseg/tests/tests.cc [new file with mode: 0644]
dcmseg/tests/tutils.cc [new file with mode: 0644]
dcmsign/apps/Makefile.dep
dcmsign/libsrc/Makefile.dep
dcmsr/apps/Makefile.dep
dcmsr/apps/dsr2html.cc
dcmsr/apps/dsr2xml.cc
dcmsr/apps/dsrdump.cc
dcmsr/docs/dcmsr.dox
dcmsr/docs/dsr2html.man
dcmsr/docs/dsr2xml.man
dcmsr/docs/xml2dsr.man
dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h
dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h
dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h
dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/init.h
dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
dcmsr/include/dcmtk/dcmsr/codes/dcm.h
dcmsr/include/dcmtk/dcmsr/codes/ncit.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/codes/srt.h
dcmsr/include/dcmtk/dcmsr/codes/ucum.h
dcmsr/include/dcmtk/dcmsr/codes/umls.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/dsdefine.h
dcmsr/include/dcmtk/dcmsr/dsracqcc.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/dsrbascc.h
dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h
dcmsr/include/dcmtk/dcmsr/dsrchecc.h
dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
dcmsr/include/dcmtk/dcmsr/dsrcomcc.h
dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
dcmsr/include/dcmtk/dcmsr/dsrctpl.h
dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
dcmsr/include/dcmtk/dcmsr/dsrdoc.h
dcmsr/include/dcmtk/dcmsr/dsrdocst.h
dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
dcmsr/include/dcmtk/dcmsr/dsrenhcc.h
dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
dcmsr/include/dcmtk/dcmsr/dsriodcc.h
dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
dcmsr/include/dcmtk/dcmsr/dsrposcn.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/dsrprocc.h
dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
dcmsr/include/dcmtk/dcmsr/dsrscovl.h
dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
dcmsr/include/dcmtk/dcmsr/dsrspecc.h
dcmsr/include/dcmtk/dcmsr/dsrstpl.h
dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
dcmsr/include/dcmtk/dcmsr/dsrtpltn.h [new file with mode: 0644]
dcmsr/include/dcmtk/dcmsr/dsrtree.h
dcmsr/include/dcmtk/dcmsr/dsrtypes.h
dcmsr/include/dcmtk/dcmsr/dsrwavvl.h
dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
dcmsr/libcmr/CMakeLists.txt
dcmsr/libcmr/Makefile.dep
dcmsr/libcmr/Makefile.in
dcmsr/libcmr/cid100.cc
dcmsr/libcmr/cid10013.cc
dcmsr/libcmr/cid10033.cc
dcmsr/libcmr/cid11.cc
dcmsr/libcmr/cid244.cc
dcmsr/libcmr/cid29.cc
dcmsr/libcmr/cid4020.cc
dcmsr/libcmr/cid4021.cc
dcmsr/libcmr/cid4031.cc
dcmsr/libcmr/cid42.cc
dcmsr/libcmr/cid6147.cc [new file with mode: 0644]
dcmsr/libcmr/cid7021.cc
dcmsr/libcmr/cid7181.cc [new file with mode: 0644]
dcmsr/libcmr/cid7445.cc
dcmsr/libcmr/cid7452.cc
dcmsr/libcmr/cid7453.cc
dcmsr/libcmr/cid7464.cc [new file with mode: 0644]
dcmsr/libcmr/cid7469.cc [new file with mode: 0644]
dcmsr/libcmr/init.cc
dcmsr/libcmr/srnumvl.cc
dcmsr/libcmr/tid1001.cc
dcmsr/libcmr/tid1204.cc
dcmsr/libcmr/tid1411.cc [new file with mode: 0644]
dcmsr/libcmr/tid1500.cc [new file with mode: 0644]
dcmsr/libcmr/tid1600.cc
dcmsr/libsrc/CMakeLists.txt
dcmsr/libsrc/Makefile.dep
dcmsr/libsrc/Makefile.in
dcmsr/libsrc/dsracqcc.cc [new file with mode: 0644]
dcmsr/libsrc/dsrbascc.cc
dcmsr/libsrc/dsrc3dcc.cc
dcmsr/libsrc/dsrchecc.cc
dcmsr/libsrc/dsrcodvl.cc
dcmsr/libsrc/dsrcolcc.cc
dcmsr/libsrc/dsrcomcc.cc
dcmsr/libsrc/dsrcomvl.cc
dcmsr/libsrc/dsrcsidl.cc
dcmsr/libsrc/dsrctpl.cc
dcmsr/libsrc/dsrctxgr.cc
dcmsr/libsrc/dsrdoc.cc
dcmsr/libsrc/dsrdocst.cc
dcmsr/libsrc/dsrdoctn.cc
dcmsr/libsrc/dsrdoctr.cc
dcmsr/libsrc/dsrenhcc.cc
dcmsr/libsrc/dsrimgfr.cc
dcmsr/libsrc/dsrimgse.cc
dcmsr/libsrc/dsrimgvl.cc
dcmsr/libsrc/dsrimpcc.cc
dcmsr/libsrc/dsrkeycc.cc
dcmsr/libsrc/dsrmaccc.cc
dcmsr/libsrc/dsrmamcc.cc
dcmsr/libsrc/dsrnumvl.cc
dcmsr/libsrc/dsrposcn.cc [new file with mode: 0644]
dcmsr/libsrc/dsrprocc.cc
dcmsr/libsrc/dsrrrdcc.cc
dcmsr/libsrc/dsrrtpl.cc
dcmsr/libsrc/dsrsc3gr.cc
dcmsr/libsrc/dsrsc3vl.cc
dcmsr/libsrc/dsrscogr.cc
dcmsr/libsrc/dsrscovl.cc
dcmsr/libsrc/dsrsoprf.cc
dcmsr/libsrc/dsrspecc.cc
dcmsr/libsrc/dsrstpl.cc
dcmsr/libsrc/dsrtcodt.cc
dcmsr/libsrc/dsrtcosp.cc
dcmsr/libsrc/dsrtcoto.cc
dcmsr/libsrc/dsrtcovl.cc
dcmsr/libsrc/dsrtncsr.cc [deleted file]
dcmsr/libsrc/dsrtpltn.cc [new file with mode: 0644]
dcmsr/libsrc/dsrtypes.cc
dcmsr/libsrc/dsrwavch.cc
dcmsr/libsrc/dsrwavvl.cc
dcmsr/libsrc/dsrxrdcc.cc
dcmsr/tests/Makefile.dep
dcmsr/tests/mkreport.cc
dcmsr/tests/tests.cc
dcmsr/tests/tsrcmr.cc
dcmsr/tests/tsrcodvl.cc
dcmsr/tests/tsrdoc.cc
dcmsr/tests/tsrdoctr.cc
dcmsr/tests/tsrnumvl.cc
dcmsr/tests/tsrtpl.cc
dcmsr/tests/tsrtree.cc
dcmtls/libsrc/Makefile.dep
dcmtls/libsrc/tlstrans.cc
dcmwlm/apps/Makefile.dep
dcmwlm/libsrc/Makefile.dep
dcmwlm/tests/Makefile.dep
docs/CHANGES.361
doxygen/htmldocs.cfg
doxygen/manpages.cfg
doxygen/manpages/man1/dcm2pdf.1
doxygen/manpages/man1/dcm2pnm.1
doxygen/manpages/man1/dcm2xml.1
doxygen/manpages/man1/dcmcjpeg.1
doxygen/manpages/man1/dcmcjpls.1
doxygen/manpages/man1/dcmconv.1
doxygen/manpages/man1/dcmcrle.1
doxygen/manpages/man1/dcmdjpeg.1
doxygen/manpages/man1/dcmdjpls.1
doxygen/manpages/man1/dcmdrle.1
doxygen/manpages/man1/dcmdspfn.1
doxygen/manpages/man1/dcmdump.1
doxygen/manpages/man1/dcmftest.1
doxygen/manpages/man1/dcmgpdir.1
doxygen/manpages/man1/dcmj2pnm.1
doxygen/manpages/man1/dcml2pnm.1
doxygen/manpages/man1/dcmmkcrv.1
doxygen/manpages/man1/dcmmkdir.1
doxygen/manpages/man1/dcmmklut.1
doxygen/manpages/man1/dcmodify.1
doxygen/manpages/man1/dcmp2pgm.1
doxygen/manpages/man1/dcmprscp.1
doxygen/manpages/man1/dcmprscu.1
doxygen/manpages/man1/dcmpschk.1
doxygen/manpages/man1/dcmpsmk.1
doxygen/manpages/man1/dcmpsprt.1
doxygen/manpages/man1/dcmpsrcv.1
doxygen/manpages/man1/dcmpssnd.1
doxygen/manpages/man1/dcmqridx.1
doxygen/manpages/man1/dcmqrscp.1
doxygen/manpages/man1/dcmqrti.1
doxygen/manpages/man1/dcmquant.1
doxygen/manpages/man1/dcmrecv.1
doxygen/manpages/man1/dcmscale.1
doxygen/manpages/man1/dcmsend.1
doxygen/manpages/man1/dcmsign.1
doxygen/manpages/man1/dcod2lum.1
doxygen/manpages/man1/dconvlum.1
doxygen/manpages/man1/drtdump.1
doxygen/manpages/man1/dsr2html.1
doxygen/manpages/man1/dsr2xml.1
doxygen/manpages/man1/dsrdump.1
doxygen/manpages/man1/dump2dcm.1
doxygen/manpages/man1/echoscu.1
doxygen/manpages/man1/findscu.1
doxygen/manpages/man1/getscu.1
doxygen/manpages/man1/img2dcm.1
doxygen/manpages/man1/movescu.1
doxygen/manpages/man1/pdf2dcm.1
doxygen/manpages/man1/storescp.1
doxygen/manpages/man1/storescu.1
doxygen/manpages/man1/termscu.1
doxygen/manpages/man1/wlmscpfs.1
doxygen/manpages/man1/xml2dcm.1
doxygen/manpages/man1/xml2dsr.1
oflog/libsrc/Makefile.dep
ofstd/include/dcmtk/ofstd/ofchrenc.h
ofstd/include/dcmtk/ofstd/ofcmdln.h
ofstd/include/dcmtk/ofstd/offile.h
ofstd/include/dcmtk/ofstd/ofmath.h [new file with mode: 0644]
ofstd/include/dcmtk/ofstd/ofstack.h
ofstd/include/dcmtk/ofstd/ofstd.h
ofstd/include/dcmtk/ofstd/oftempf.h
ofstd/libsrc/Makefile.dep
ofstd/libsrc/ofchrenc.cc
ofstd/libsrc/ofcmdln.cc
ofstd/libsrc/offile.cc
ofstd/libsrc/ofmath.cc
ofstd/libsrc/ofstd.cc
ofstd/libsrc/ofuuid.cc
ofstd/libsrc/ofxml.cc
ofstd/tests/Makefile.dep
ofstd/tests/taddsub.cc [new file with mode: 0644]
ofstd/tests/tests.cc
ofstd/tests/tlimits.cc
ofstd/tests/tofstd.cc

index 54ebdb58701fe966e8f99ea3e5133488183dd042..2ddd7b2b874513df60ed076586adfa62c2d35de9 100644 (file)
@@ -9,9 +9,9 @@ SET(DCMTK_CONFIGURATION_DONE true)
 
 # Minimum CMake version required
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.1.1)
-  SET(CMAKE_BACKWARDS_COMPATIBILITY 3.1.1 CACHE STRING "Latest version of CMake when this project was released." FORCE)
-ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.1.1)
+IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.3.2)
+  SET(CMAKE_BACKWARDS_COMPATIBILITY 3.3.2 CACHE STRING "Latest version of CMake when this project was released." FORCE)
+ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.3.2)
 
 # CMAKE_BUILD_TYPE is set to value "Release" if none is specified by the
 # selected build file generator. For those generators that support multiple
@@ -42,7 +42,7 @@ SET(DCMTK_MINOR_VERSION 6)
 SET(DCMTK_BUILD_VERSION 1)
 # The ABI is not guaranteed to be stable between different snapshots/releases,
 # so this particular version number is increased for each snapshot or release.
-SET(DCMTK_ABI_VERSION 7)
+SET(DCMTK_ABI_VERSION 8)
 
 # Package "release" settings (some are currently unused and, therefore, disabled)
 SET(DCMTK_PACKAGE_NAME "dcmtk")
@@ -212,7 +212,7 @@ IF(COMMAND CMAKE_POLICY)
 ENDIF(COMMAND CMAKE_POLICY)
 
 # pass optional build date to compiler
-ADD_DEFINITIONS(-DDCMTK_BUILD_DATE=\\\"2015-09-24\\\")
+ADD_DEFINITIONS(-DDCMTK_BUILD_DATE=\\\"2016-02-16\\\")
 
 # make OFString(NULL) safe by default
 ADD_DEFINITIONS(-DUSE_NULL_SAFE_OFSTRING)
index 2b6325d8f0b7952f8f5f1879186ffe7578ca08e2..a68bd74386dbc8f2d4876d9091d7765ecf9206c5 100644 (file)
@@ -1024,6 +1024,11 @@ typedef unsigned long ulong;
     #pragma warning( disable : 4996 )  /* disable warnings about "deprecated" C runtime functions */
     #pragma warning( disable : 4351 )  /* disable warnings about "new behavior" when initializing the elements of an array */
 #endif /* _MSC_VER >= 1400 */
+/* Disable min() and max() macros pre-defined by Microsoft. We define our own
+ * version in oflimits.h and on Windows that could result in name clashes in
+ * Visual Studio.
+ */
+#define NOMINMAX
 #endif /* _MSC_VER */
 
 /* Define if your system defines ios::nocreate in iostream.h */
index c3234255d0deaa024b31afaa479891a84a34fdb3..3a4c596e434898e4bdce60b09d67aa49518a23de 100644 (file)
@@ -59,6 +59,7 @@ INCLUDE(CMake/dcmtkAfterModules.cmake NO_POLICY_SCOPE)
 
 # Install global headers
 INSTALL(FILES ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/osconfig.h
+              ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/arith.h
         DESTINATION ${DCMTK_INSTALL_INCDIR}/dcmtk/config
         COMPONENT include)
 
index 86ac1d2c651ebf4e0eea601d5d3abbf63f09c7ee..de2a236d5a7e902ba37aac2d955f06f55036d2cc 100644 (file)
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -5,7 +5,7 @@ Unless otherwise specified, the DCMTK software package has the following
 copyright:
 
 /*
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.
  *
  *  This software and supporting documentation were developed by
@@ -478,7 +478,7 @@ The dcmrt sub-package is covered by the following copyright:
 ---------------------------------------------------------------------------
 
 Copyright (c) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
-Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -511,7 +511,7 @@ Parts of the dcmsr sub-package are covered by the following copyright:
 
 ---------------------------------------------------------------------------
 
-Copyright (c) 2015, J. Riesmeier, Oldenburg, Germany
+Copyright (c) 2015-2016, J. Riesmeier, Oldenburg, Germany
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -579,3 +579,37 @@ covered by the following copyright:
 # POSSIBILITY OF SUCH DAMAGE.
 
 ---------------------------------------------------------------------------
+
+The cielabutil source code (class IODCLabUtil) is adapted from Pascal Getreuer's
+package for converting color representations
+
+  http://www.getreuer.info/home/colorspace
+
+which comes with the following original copyright:
+
+---------------------------------------------------------------------------
+
+Copyright © 2005–2010, Pascal Getreuer
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+    Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---------------------------------------------------------------------------
diff --git a/VERSION b/VERSION
index 3ed5517eca6b555a5bd46dc14d4b35a5bffc908d..1413f3681657fa5b6f8be4823fc3d74db0eada1f 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.6.1_20150924
+3.6.1_20160216
index a6ba698ad22ad8de57a34bebcc68da393772a779..a60168c00c703b464aab1e4c10b30ee7a8848b63 100644 (file)
@@ -52,7 +52,7 @@ DEBUG = @DEBUG@
 #
 
 # We want the old behavior of OFString(NULL) for now, no crashes.
-GLOBALDEFS = @DEFS@ -DDCMTK_BUILD_DATE=\"2015-09-24\" -DUSE_NULL_SAFE_OFSTRING -DDCMTK_BUILD_IN_PROGRESS
+GLOBALDEFS = @DEFS@ -DDCMTK_BUILD_DATE=\"2016-02-16\" -DUSE_NULL_SAFE_OFSTRING -DDCMTK_BUILD_IN_PROGRESS
 
 #
 # ARCH defines special machine archtecture compiler settings
index 9bd8f39e9c5885cce71b968f283dcd8d72a4e5f0..429aa0428ba376e6678d483dfa88a2d56ab42da9 100644 (file)
@@ -41,6 +41,7 @@ check-exhaustive: tests-all
 include-install:
        ./mkinstalldirs $(DESTDIR)$(includedir)/dcmtk/config
        $(INSTALL_DATA) include/dcmtk/config/osconfig.h $(DESTDIR)$(includedir)/dcmtk/config
+       $(INSTALL_DATA) include/dcmtk/config/arith.h $(DESTDIR)$(includedir)/dcmtk/config
 
 docs-install:
        ./mkinstalldirs $(DESTDIR)$(docdir)
index 54c6bfe0e701a2032a62c25e2ec806b7f8ae8328..948766d5f1d837d06390d044f8d0a4c88ffb8c63 100644 (file)
@@ -207,7 +207,7 @@ static int test_inf( STD_NAMESPACE ostream& out, const char* name )
     const int has_inf = print_flag
     (
         out,
-        OFStandard::isinf(t),
+        OFMath::isinf(t),
         "HAS_INFINITY",
         name,
         7
@@ -236,7 +236,7 @@ static int test_qnan( STD_NAMESPACE ostream& out, const char* name )
     const int has_qnan = print_flag
     (
         out,
-        OFStandard::isnan( t ),
+        OFMath::isnan( t ),
         "HAS_QUIET_NAN",
         name,
         7
@@ -336,7 +336,7 @@ static int test_snan( STD_NAMESPACE ostream& out, const char* name )
 {
     // Create signaling NaNs and test if they really are signaling NaNs
     const T& t = guess<T>::snan();
-    int flag = OFStandard::isnan( t ) && test_trap( &provoke_snan<T> );
+    int flag = OFMath::isnan( t ) && test_trap( &provoke_snan<T> );
     // Disable floating point exceptions that have been enabled for the test,
     // Windows and Unix version.
 #ifdef HAVE_WINDOWS_H
index a5d0bd5aae6b0f043a4456bde21ede4f121214a8..158cc8716526a886c18e1325237870eb83b965df 100755 (executable)
@@ -13620,6 +13620,9 @@ if test "${enable_builtin_dict+set}" = set; then :
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
                 DCMTK_ENABLE_BUILTIN_DICTIONARY=true
+
+$as_echo "#define ENABLE_BUILTIN_DICTIONARY /**/" >>confdefs.h
+
     ;;
   *)
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -14948,7 +14951,7 @@ $as_echo "#define HAVE_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE 1" >>confdefs.h
 $as_echo "no" >&6; }
     fi
 
-o
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct pwd contains the field pw_gecos" >&5
 $as_echo_n "checking whether struct pwd contains the field pw_gecos... " >&6; }
index 84665ab6d79f6c321a11976435b3dda0108646e7..d2c9c1616442e4749c9eac7337d22d40b4d50e13 100644 (file)
@@ -957,7 +957,7 @@ AC_ARG_ENABLE(builtin-dict,
     dnl including the populated dictionary object and not the
     dnl empty dummy dictionary in dcmdata
     DCMTK_ENABLE_BUILTIN_DICTIONARY=true
-    AC_DEFINE(ENABLE_BUILTIN_DICTIONARY, , [Define if we are compiling for loading external dictionary from default path.])
+    AC_DEFINE(ENABLE_BUILTIN_DICTIONARY, , [Define if we are compiling with built-in (compiled-in) dictionary enabled.])
     ;;
   *)
     AC_MSG_RESULT(no)
@@ -1312,7 +1312,7 @@ AC_CHECK_ATTRIBUTE_ALIGNED([HAVE_ATTRIBUTE_ALIGNED])
 AC_CHECK_ATTRIBUTE_ALIGNED_SUPPORTS_TEMPLATES([ATTRIBUTE_ALIGNED_SUPPORTS_TEMPLATES])
 AC_CHECK_ALIGNAS_SUPPORTS_TYPEDEFS([ALIGNAS_SUPPORTS_TYPEDEFS])
 AC_CHECK_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE([HAVE_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE])
-o
+
 dnl -------------------------------------------------------
 dnl Test if passwd has the pw_gecos field
 dnl -------------------------------------------------------
index 02090de54b8d471d338073d1b5afe5e62e55a004..bad84b110d4de2362ce0ea04d483544653082e2e 100644 (file)
@@ -164,7 +164,7 @@ DOXYGEN
 
 ENABLE_BUILTIN_DICTIONARY
   Affected: dcmdata
-  Type of modification: Enables or disables population of builtin dictionary 
+  Type of modification: Activates feature
   Explanation: If enabled, DCMTK's global builtin dictionary, that is always
     loaded on startup, is populated with known DICOM tags.  Otherwise, the
     builtin dictionary stays empty.  For more further information about
index 0b7399b2d8df51b8d806320ba9d8eeb178f2cbc1..bc3aeb6f749ac6f72dd75f6b13c7825b5dd086d9 100644 (file)
 /* Define the default directory where support data files reside. */
 #undef DEFAULT_SUPPORT_DATA_DIR
 
+/* Define if we are compiling with built-in (compiled-in) dictionary enabled.
+   */
+#undef ENABLE_BUILTIN_DICTIONARY
+
 /* Define if we are compiling for loading external dictionary from default
    path. */
 #undef ENABLE_EXTERNAL_DICTIONARY
 
-/* Define if we are compiling with built-in dictionary */
-#undef ENABLE_BUILTIN_DICTIONARY
-
 /* Define if we are compiling for enabling external private tag dictionary. */
 #undef ENABLE_PRIVATE_TAGS
 
index b2818e504cbc98c80fce492751fe0b48c72c24e0..6f89b65c9025fba112545bd54cc5e176bbd06a50 100644 (file)
@@ -38,6 +38,8 @@ dcm2pdf.o: dcm2pdf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -76,7 +78,8 @@ dcm2pdf.o: dcm2pdf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcistrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcistrmz.h
 dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -117,6 +120,8 @@ dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -155,7 +160,7 @@ dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -197,6 +202,8 @@ dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -235,8 +242,8 @@ dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcostrmz.h \
- ../include/dcmtk/dcmdata/dcistrmz.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcostrmz.h ../include/dcmtk/dcmdata/dcistrmz.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -278,6 +285,8 @@ dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -316,7 +325,8 @@ dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcrleerg.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcrleerg.h
 dcmdrle.o: dcmdrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -357,6 +367,8 @@ dcmdrle.o: dcmdrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -395,7 +407,8 @@ dcmdrle.o: dcmdrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcrledrg.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcrledrg.h
 dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -436,6 +449,8 @@ dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -474,7 +489,8 @@ dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcistrmz.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcistrmz.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcmftest.o: dcmftest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -490,6 +506,8 @@ dcmftest.o: dcmftest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -564,6 +582,8 @@ dcmgpdir.o: dcmgpdir.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -602,7 +622,8 @@ dcmgpdir.o: dcmgpdir.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcddirif.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcddirif.h
 dcmodify.o: dcmodify.cc ../../config/include/dcmtk/config/osconfig.h \
  mdfconen.h ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -643,6 +664,8 @@ dcmodify.o: dcmodify.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcpath.h ../include/dcmtk/dcmdata/dcdatset.h \
@@ -662,6 +685,8 @@ dump2dcm.o: dump2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -728,8 +753,8 @@ dump2dcm.o: dump2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcostrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcostrmz.h
 img2dcm.o: img2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -748,6 +773,8 @@ img2dcm.o: img2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcfilefo.h \
  ../include/dcmtk/dcmdata/dcsequen.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -832,6 +859,8 @@ mdfconen.o: mdfconen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h mdfdsman.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dctk.h \
@@ -870,7 +899,8 @@ mdfconen.o: mdfconen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcistrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcistrmz.h
 mdfdsman.o: mdfdsman.cc ../../config/include/dcmtk/config/osconfig.h \
  mdfdsman.h ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -912,6 +942,8 @@ mdfdsman.o: mdfdsman.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dcswap.h \
@@ -949,8 +981,8 @@ mdfdsman.o: mdfdsman.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcpath.h \
- ../include/dcmtk/dcmdata/dcistrmf.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpath.h ../include/dcmtk/dcmdata/dcistrmf.h
 pdf2dcm.o: pdf2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -991,6 +1023,8 @@ pdf2dcm.o: pdf2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -1029,7 +1063,8 @@ pdf2dcm.o: pdf2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dccodec.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dccodec.h
 xml2dcm.o: xml2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -1070,6 +1105,8 @@ xml2dcm.o: xml2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcswap.h \
  ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
@@ -1108,5 +1145,5 @@ xml2dcm.o: xml2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcostrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcostrmz.h
index 171e254db3d190e0cffbde95a11fba3805e02c6c..66aa23cd349aacd5bec693faa8348d9912d2c825 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2015, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -111,9 +111,9 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                 {
                     /* the dataset contains non-ASCII characters that really should not be there */
                     OFLOG_ERROR(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": SpecificCharacterSet (0008,0005) "
-                        << "element absent (on the main dataset level) but extended characters used in file: " << ifname);
+                        << "element absent (on the main data set level) but extended characters used in file: " << ifname);
                     OFLOG_DEBUG(dcm2xmlLogger, "use option --charset-assume to manually specify an appropriate character set");
-                    return EC_IllegalCall;
+                    return makeOFCondition(OFM_dcmdata, EC_CODE_CannotSelectCharacterSet, OF_error, "Missing Specific Character Set");;
                 } else {
                     OFString sopClass;
                     csetString = defaultCharset;
@@ -141,7 +141,7 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                     else {
                         OFLOG_FATAL(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": Character set '"
                             << defaultCharset << "' specified with option --charset-assume not supported");
-                        return EC_IllegalCall;
+                        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotSelectCharacterSet, OF_error, "Cannot select character set");
                     }
                     /* check whether this file is a DICOMDIR */
                     if (dfile->getMetaInfo()->findAndGetOFString(DCM_MediaStorageSOPClassUID, sopClass).bad() ||
@@ -158,7 +158,7 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                 {
                     /* use "debug" instead of "warn" in order to avoid too much output in default mode */
                     OFLOG_DEBUG(dcm2xmlLogger, "ignoring character set '" << defaultCharset
-                        << "' specified with option --charset-assume since it is not needed for this dataset");
+                        << "' specified with option --charset-assume since it is not needed for this data set");
                 }
                 /* by default, we use UTF-8 encoding */
                 encString = "UTF-8";
@@ -267,7 +267,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-require",    "+Cr",    "require declaration of extended charset (def.)");
         cmd.addOption("--charset-assume",     "+Ca", 1, "[c]harset: string",
                                                         "assume charset c if no extended charset declared");
-        cmd.addOption("--charset-check-all",  "+Cc",    "check all data elements with string values\n(default: only PN, LO, LT, SH, ST and UT)");
+        cmd.addOption("--charset-check-all",  "+Cc",    "check all data elements with string values\n(default: only PN, LO, LT, SH, ST, UC and UT)");
 #ifdef WITH_LIBICONV
         cmd.addOption("--convert-to-utf8",    "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
@@ -547,16 +547,24 @@ int main(int argc, char *argv[])
                     if (stream.good())
                     {
                         /* write content in XML format to file */
-                        if (writeFile(stream, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
-                                      opt_defaultCharset, opt_writeFlags, opt_checkAllStrings).bad())
+                        status = writeFile(stream, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
+                            opt_defaultCharset, opt_writeFlags, opt_checkAllStrings);
+                        if (status.bad())
+                        {
+                            OFLOG_ERROR(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": error (" << status.text() << ") writing file: "<< ofname);
                             result = 2;
+                        }
                     } else
                         result = 1;
                 } else {
                     /* write content in XML format to standard output */
-                    if (writeFile(COUT, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
-                                  opt_defaultCharset, opt_writeFlags, opt_checkAllStrings).bad())
+                    status = writeFile(COUT, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
+                        opt_defaultCharset, opt_writeFlags, opt_checkAllStrings);
+                    if (status.bad())
+                    {
+                        OFLOG_ERROR(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": error (" << status.text() << ") writing to standard output");
                         result = 3;
+                    }
                 }
             }
         } else {
index 1c121724d2fb86ee40f26a0faaa6b8422ddc4ac2..a4074171e402d4b65e7ccdf50aafde5a68a947c1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -759,6 +759,9 @@ static int dumpFile(STD_NAMESPACE ostream &out,
             if (stopOnErrors) return result;
         }
     }
+#else
+    // avoid compiler warning on unused variable
+    (void)convertToUTF8;
 #endif
 
     size_t pixelCounter = 0;
index 40cba12a7d0a9d7742020d40f606f5f2082d4ec9..f1d36cec9652f01ef010f798b07ba895f7ffc93c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -29,6 +29,9 @@
  *  - General Purpose BD Interchange with MPEG2 MP@HL (STD-GEN-BD-MPEG2-MPHL)
  *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP@Level4.1 (STD-GEN-BD-MPEG4-HPLV41)
  *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible HiP@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
+ *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+ *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+ *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
  *  - General Purpose USB and Flash Memory Interchange with JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)
  *  - General Purpose USB and Flash Memory Interchange with JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)
  *  - General Purpose MIME Interchange (STD-GEN-MIME)
@@ -198,6 +201,9 @@ DCMTK_MAIN_FUNCTION
         cmd.addOption("--general-bd-mpeg2-mphl", "-Pbh",   "General Purpose BD Interchange with MPEG2\nMP@HL (STD-GEN-BD-MPEG2-MPHL)");
         cmd.addOption("--general-bd-mpeg4-hp",   "-Pba",   "General Purpose BD Interchange with MPEG-4\nAVC/H.264 HiP@Level4.1\n(STD-GEN-BD-MPEG4-HPLV41)");
         cmd.addOption("--general-bd-mpeg4-hpbd", "-Pbb",   "General Purpose BD Interchange with MPEG-4\nAVC/H.264 BD-Compatible HiP@Level4.1\n(STD-GEN-BD-MPEG4-HPLV41BD)");
+        cmd.addOption("--general-bd-mpeg4-hp2d",           "General Purpose BD Interchange with MPEG-4\nAVC/H.264 HiP@Level4.2 for 2D video\n(STD-GEN-BD-MPEG4-HPLV42-2D)");
+        cmd.addOption("--general-bd-mpeg4-hp3d",           "General Purpose BD Interchange with MPEG-4\nAVC/H.264 HiP@Level4.2 for 3D video\n(STD-GEN-BD-MPEG4-HPLV42-3D)");
+        cmd.addOption("--general-bd-mpeg4-hpst",           "General Purpose BD Interchange with MPEG-4\nAVC/H.264 Stereo HiP@Level4.2\n(STD-GEN-BD-MPEG4-SHPLV42)");
         cmd.addOption("--usb-and-flash-jpeg",    "-Pfl",   "General Purpose USB/Flash Memory Interchange\nwith JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)");
         cmd.addOption("--usb-and-flash-j2k",     "-Pf2",   "General Purpose USB/Flash Memory Interchange\nwith JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)");
         cmd.addOption("--general-mime",          "-Pmi",   "General Purpose MIME Interchange\n(STD-GEN-MIME)");
@@ -380,6 +386,12 @@ DCMTK_MAIN_FUNCTION
             opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV41;
         if (cmd.findOption("--general-bd-mpeg4-hpbd"))
             opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV41BD;
+        if (cmd.findOption("--general-bd-mpeg4-hp2d"))
+            opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV42_2D;
+        if (cmd.findOption("--general-bd-mpeg4-hp3d"))
+            opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV42_3D;
+        if (cmd.findOption("--general-bd-mpeg4-hpst"))
+            opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4StereoHPatLV42;
         if (cmd.findOption("--usb-and-flash-jpeg"))
             opt_profile = DicomDirInterface::AP_USBandFlashJPEG;
         if (cmd.findOption("--usb-and-flash-j2k"))
index 16408088e572a11599c7ad428460492a6e9f0fa6..5a212cf334928cd45d2c4ee92fb2dae40fa2ea08 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -34,8 +34,8 @@
  *        two characters.  If the VR can determined from the tag, this part
  *        of a line is optional.
  * Value: There are several rules for writing values:
- *        1. US, SS, SL, UL, FD, FL are written as decimal strings that can
- *           be read by scanf().
+ *        1. US, SS, SL, UL, FD, FL, OD, OF and OL are written as decimal
+ *           strings that can be read by scanf().
  *        2. AT is written as '(gggg,eeee)' with additional spaces stripped
  *           off automatically and gggg and eeee being decimal strings that
  *           can be read by scanf().
index 7c5214fc3f7ec2d8c9d939d7ca87e0e1112b21a4..4303402c50ee8fe13fed439a4703003bd8e1e118 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2010, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -36,7 +36,7 @@ class DcmElement;
 
 
 /** This class encapsulates data structures and operations for modifying
- *  Dicom files. Therefore it allows the process of load->modify->save to
+ *  DICOM files. Therefore it allows the process of load->modify->save to
  *  provide this service.
  */
 class MdfDatasetManager
@@ -56,7 +56,7 @@ public:
         @param readMode read file with or without metaheader. Default=autodetect
         @param xfer try to read with this transfer syntax. Default=autodetect
         @param createIfNecessary If true, the file is created if it does not exist
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition loadFile(const char *file_name,
                          const E_FileReadMode readMode = ERM_autoDetect,
@@ -76,7 +76,7 @@ public:
      *  @param no_reservation_checks if true, any missing private reservation
      *                               tags are ignored when inserting private
      *                               tags. Only makes sense w/o only_modify
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition modifyOrInsertPath(OFString tag_path,
                                    const OFString &value,
@@ -98,7 +98,7 @@ public:
      *  @param no_reservation_checks if true, any missing private reservation
      *                               tags are ignored when inserting private
      *                               tags. Only makes sense w/o only_modify
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition modifyOrInsertFromFile(OFString tag_path,
                                        const OFString &filename,
@@ -110,13 +110,13 @@ public:
     /** Modifies all matching tags in dataset to a new value
      *  @param tag_path denotes, which tag to modify
      *  @param value denotes new value of tag
-     *  @param update_metaheader if true, metaheader uids are updated,
-     *         if related dataset uids are changed, (default=true)
+     *  @param update_metaheader if true, metaheader UIDs are updated,
+     *         if related dataset UIDs are changed, (default=true)
      *  @param count returns holds the number of tags, that were affected
      *  @param ignore_missing_tags if true, tags that could not be found
      *                             while modifying (only_modify must be true)
      *                             are handled as non-errors
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition modifyAllTags(OFString tag_path,
                               const OFString &value,
@@ -131,13 +131,13 @@ public:
      *  @param ignore_missing_tags if true, tags that could not be found
      *                             while modifying (only_modify must be true)
      *                             are handled as non-errors
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition deleteTag(OFString tag_path,
                           const OFBool all_tags,
                           const OFBool ignore_missing_tags);
 
-    /** Deletes all private data from file, ie. all tags having
+    /** Deletes all private data from file,\ i.e. all tags having
      *  odd group numbers.
      *  @return EC_Normal, if deletion was successful; error code otherwise
      */
@@ -146,7 +146,7 @@ public:
     /** Inserts new Study, Series or SOP Instance UID. If SOP Instance
      *  UID is generated, the related tag in the metaheader is deleted, too
      *  so that the new UID is also applied there when saving to disk later.
-     *  @param uidkey [in] The Instance UID to insert (study, series or sop
+     *  @param uidKey [in] The Instance UID to insert (study, series or sop
      *                instance UID key permitted).
      *  @return EC_Normal, if insertion was successful, error otherwise
      */
@@ -157,12 +157,12 @@ public:
      *  @param file_name filename to save to
      *  @param opt_xfer transfer syntax to save to (EXS_Unknown: dont change)
      *  @param opt_enctype write with explicit or implicit length encoding
-     *  @param opt_glenc option to set group lenghth calculation mode
+     *  @param opt_glenc option to set group length calculation mode
      *  @param opt_padenc sets padding option
      *  @param opt_filepad pad file to a multiple of this options value
      *  @param opt_itempad pad item to a multiple of this options value
      *  @param opt_dataset if true:ony write only dataset, else write fileformat
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition saveFile(const char *file_name,
                          E_TransferSyntax opt_xfer = EXS_Unknown,
@@ -175,7 +175,7 @@ public:
 
     /** Saves current dataset back to file using original filename and original
      *  parameters like transfer syntax, padding etc.
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition saveFile();
 
@@ -190,7 +190,7 @@ public:
 
     /** Returns the DcmFileFormat, that this MdfDatasetManager handles.
      *  You should use the returned object with care to avoid
-     *  sideeffects with other class methods, that modify this object, too.
+     *  side-effects with other class methods, that modify this object, too.
      *  @return returns the DcmFileFormat, this MdfDatasetManager manages and
      *          NULL, if no file is loaded
      */
@@ -219,7 +219,7 @@ protected:
 
     /** If key is the tag for SOPInstanceUID or SOPClassUID, then this function
      *  removes the related MediaStorage UIDs from the metaheader. The
-     *  metaheader is then updated automagically when the file is saved back to
+     *  metaheader is then updated "automagically" when the file is saved back to
      *  disk.
      *  @param key tag to examine
      */
index 8eb349666ca5c2c63bf6989fb11c989c76b92c7d..4b1615977596c37f28bc60ad2acc58d7c2a6e622 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2015, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -300,9 +300,8 @@ static OFCondition putElementContent(xmlNodePtr current,
         } else {
             OFString dicomVal;
             /* convert character set from UTF-8 (for specific VRs only) */
-            if (((dcmEVR == EVR_PN) || (dcmEVR == EVR_SH) || (dcmEVR == EVR_LO) ||
-                 (dcmEVR == EVR_ST) || (dcmEVR == EVR_LT) || (dcmEVR == EVR_UT)) &&
-                (xmlStrlen(elemVal) > 0) && convertUtf8ToCharset(elemVal, dicomVal))
+            if (element->isAffectedBySpecificCharacterSet() &&
+               (xmlStrlen(elemVal) > 0) && convertUtf8ToCharset(elemVal, dicomVal))
             {
                 result = element->putOFStringArray(dicomVal);
             } else {
index 0c9cf4dec1afd1af80418fd8685572b4f312e4aa..7146c67c904aba837e2bdcf102b3a15a41a9a720 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 1994-2015, OFFIS e.V.
+#  Copyright (C) 1994-2016, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
 #
 # Generated automatically from DICOM PS 3.6-2015c and PS 3.7-2015c.
 # File created on 2015-07-05 12:23:01 by J. Riesmeier on thinkpad.
-# File updated manually on 2015-09-18 by J. Riesmeier.
+# File updated manually on 2016-01-25 by J. Riesmeier.
 #
 # In addition, the data dictionary entries from the following final text
 # supplements and correction items (CP) have been incorporated:
-# - Supplement 156
-# - CP 1441, 1454, 1458, 1461
+# - Supplement 156, 181, 184
+# - CP 1364, 1431, 1432, 1441, 1454, 1457, 1458, 1460, 1461, 1478 (WC), 1487,
+#      1496, 1499, 1504, 1516
+# "WC" means "Draft Final Text - Waiting for Codes"
 #
 # Each line represents an entry in the data dictionary.  Each line has 5 fields
 # (Tag, VR, Name, VM, Version).  Entries need not be in ascending tag order.
 #
 #---------------------------------------------------------------------------
 #
-# Correction Items 1441, 1454, 1458, 1461
+# Supplement 181 (Tractography Results Storage SOP Class)
 #
+(0066,0101)    SQ      TrackSetSequence        1       Supplement_181
+(0066,0102)    SQ      TrackSequence   1       Supplement_181
+(0066,0103)    OW      RecommendedDisplayCIELabValueList       1       Supplement_181
+(0066,0104)    SQ      TrackingAlgorithmIdentificationSequence 1       Supplement_181
+(0066,0105)    UL      TrackSetNumber  1       Supplement_181
+(0066,0106)    LO      TrackSetLabel   1       Supplement_181
+(0066,0107)    UT      TrackSetDescription     1       Supplement_181
+(0066,0108)    SQ      TrackSetAnatomicalTypeCodeSequence      1       Supplement_181
+(0066,0121)    SQ      MeasurementsSequence    1       Supplement_181
+(0066,0124)    SQ      TrackSetStatisticsSequence      1       Supplement_181
+(0066,0125)    OF      FloatingPointValues     1       Supplement_181
+(0066,0129)    OL      TrackPointIndexList     1       Supplement_181
+(0066,0130)    SQ      TrackStatisticsSequence 1       Supplement_181
+(0066,0132)    SQ      MeasurementValuesSequence       1       Supplement_181
+(0066,0133)    SQ      DiffusionAcquisitionCodeSequence        1       Supplement_181
+(0066,0134)    SQ      DiffusionModelCodeSequence      1       Supplement_181
+#
+#---------------------------------------------------------------------------
+#
+# Supplement 184 (Brachytherapy Delivery Instruction)
+#
+(0074,1401)    SQ      BrachyTaskSequence      1       Supplement_184
+(0074,1402)    DS      ContinuationStartTotalReferenceAirKerma 1       Supplement_184
+(0074,1403)    DS      ContinuationEndTotalReferenceAirKerma   1       Supplement_184
+(0074,1404)    IS      ContinuationPulseNumber 1       Supplement_184
+(0074,1405)    SQ      ChannelDeliveryOrderSequence    1       Supplement_184
+(0074,1406)    IS      ReferencedChannelNumber 1       Supplement_184
+(0074,1407)    DS      StartCumulativeTimeWeight       1       Supplement_184
+(0074,1408)    DS      EndCumulativeTimeWeight 1       Supplement_184
+(0074,1409)    SQ      OmittedChannelSequence  1       Supplement_184
+(0074,140A)    CS      ReasonForChannelOmission        1       Supplement_184
+(0074,140B)    LO      ReasonForChannelOmissionDescription     1       Supplement_184
+(0074,140C)    IS      ChannelDeliveryOrderIndex       1       Supplement_184
+(0074,140D)    SQ      ChannelDeliveryContinuationSequence     1       Supplement_184
+(0074,140E)    SQ      OmittedApplicationSetupSequence 1       Supplement_184
+#
+#---------------------------------------------------------------------------
+#
+# Correction Items 1364, 1431, 1432, 1441, 1454, 1457, 1458, 1460, 1461, 1478 (WC),
+#                  1487, 1496, 1499, 1504, 1516
+#
+(0008,119A)    SQ      OtherFailuresSequence   1       CP_1364
+(300A,0090)    CS      BeamDoseType    1       CP_1431
+(300A,0091)    DS      AlternateBeamDose       1       CP_1431
+(300A,0092)    CS      AlternateBeamDoseType   1       CP_1431
+(300A,0309)    CS      ModulatedScanModeType   1       CP_1432
 (0040,4070)    SQ      OutputDestinationSequence       1       CP_1441
 (0040,4071)    SQ      DICOMStorageSequence    1       CP_1441
 (0040,4072)    SQ      STOWRSStorageSequence   1       CP_1441
 (0040,4073)    UR      StorageURL      1       CP_1441
 (0040,4074)    SQ      XDSStorageSequence      1       CP_1441
 (0028,2002)    CS      ColorSpace      1       CP_1454
+(0010,0026)    SQ      SourcePatientGroupIdentificationSequence        1       CP_1457
+(0010,0027)    SQ      GroupOfPatientsIdentificationSequence   1       CP_1457
+(0010,0028)    US      SubjectRelativePositionInImage  3       CP_1457
 (0040,9213)    FD      DoubleFloatRealWorldValueLastValueMapped        1       CP_1458
 (0040,9214)    FD      DoubleFloatRealWorldValueFirstValueMapped       1       CP_1458
+(300A,0501)    FL      DistalDepthFraction     1       CP_1460
+(300A,0502)    FL      DistalDepth     1       CP_1460
+(300A,0503)    FL      NominalRangeModulatioFractions  2       CP_1460
+(300A,0504)    FL      NominalRangeModulatedRegionDepths       2       CP_1460
+(300A,0505)    SQ      DepthDoseParametersSequence     1       CP_1460
+(300A,0506)    SQ      DeliveredDepthDoseParametersSequence    1       CP_1460
+(300A,0507)    FL      DeliveredDistalDepthFraction    1       CP_1460
+(300A,0508)    FL      DeliveredDistalDepth    1       CP_1460
+(300A,0509)    FL      DeliveredNominalRangeModulationFractions        2       CP_1460
+(300A,0510)    FL      DeliveredNominalRangeModulatedRegionDepths      2       CP_1460
+(300A,0511)    CS      DeliveredReferenceDoseDefinition        1       CP_1460
+(300A,0512)    CS      ReferenceDoseDefinition 1       CP_1460
 (0018,1320)    FL      B1rms   1       CP_1461
+(0010,0212)    UC      StrainDescription       1       CP_1478
+(0010,0213)    LO      StrainNomenclature      1       CP_1478
+(0010,0214)    LO      StrainStockNumber       1       CP_1478
+(0010,0215)    SQ      StrainSourceRegistryCodeSequence        1       CP_1478
+(0010,0216)    SQ      StrainStockSequence     1       CP_1478
+(0010,0217)    LO      StrainSource    1       CP_1478
+(0010,0218)    UT      StrainAdditionalInformation     1       CP_1478
+(0010,0219)    SQ      StrainCodeSequence      1       CP_1478
+(0070,030B)    FD      FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix 16      CP_1487
+(0062,0020)    UT      TrackingID      1       CP_1496
+(0062,0021)    UI      TrackingUID     1       CP_1496
+(0066,0040)    OL      LongPrimitivePointIndexList     1       CP_1499
+(0066,0041)    OL      LongTrianglePointIndexList      1       CP_1499
+(0066,0042)    OL      LongEdgePointIndexList  1       CP_1499
+(0066,0043)    OL      LongVertexPointIndexList        1       CP_1499
+(300A,0355)    LO      TrayAccessoryCode       1       CP_1504
+(0008,0055)    AE      StationAETitle  1       CP_1516
 #
 #---------------------------------------------------------------------------
 #
index e4b80e38bbebde5559e047ceb917364a05dcfe46..985c1a75b7a41232bb09a55e826eef9bf93a7562 100644 (file)
@@ -121,7 +121,7 @@ specific character set:
 
   +Cc   --charset-check-all
           check all data elements with string values
-          (default: only PN, LO, LT, SH, ST and UT)
+          (default: only PN, LO, LT, SH, ST, UC and UT)
 
           # this option is only used for the mapping to an appropriate
           # XML character encoding, but not for the conversion to UTF-8
@@ -307,7 +307,10 @@ Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
 
 If this DICOM attribute is missing in the input file, although needed, option
 \e --charset-assume can be used to specify an appropriate character set
-manually (using one of the DICOM defined terms).
+manually (using one of the DICOM defined terms).  For reasons of backward
+compatibility with previous versions of this tool, the following terms are also
+supported and mapped automatically to the associated DICOM defined terms:
+latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew.
 
 Multiple character sets using code extension techniques are not supported.  If
 needed, option \e --convert-to-utf8 can be used to convert the DICOM file or
@@ -382,6 +385,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2002-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2002-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 17f914cb7a550719c774363a1da436f654ea5771..98f2e133a10a1c19373970876bb1f5fe4c9bbd3f 100644 (file)
@@ -199,8 +199,8 @@ VR:    Value Representation must be written as 2 characters as in
        between the two characters.  If the VR can be determined from
        the tag, this part of a line is optional.
 Value: There are several rules for writing values:
-       1. US, SS, SL, UL, FD, FL are written as decimal strings that
-          can be read by scanf().
+       1. US, SS, SL, UL, FD, FL, OD, OF and OL are written as decimal
+          strings that can be read by scanf().
        2. AT is written as '(gggg,eeee)' with additional spaces
           stripped off automatically and gggg and eeee being decimal
           strings that can be read by scanf().
@@ -312,6 +312,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1996-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index ada8a415850cab6656c0177597db00ed18dcd442..1c0077dd192402edbceb3afe38e7c6fe6ec5e7f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -252,7 +252,8 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      *  codes below 128 are considered to be ASCII codes and all others are considered to
      *  be non-ASCII.
      *  @param checkAllStrings if true, also check elements with string values not affected
-     *    by SpecificCharacterSet (0008,0005), default: only check PN, LO, LT, SH, ST, UT
+     *    by SpecificCharacterSet (0008,0005). By default, only check PN, LO, LT, SH, ST,
+     *    UC and UT, i.e. none of the derived VR classes.
      *  @return true if element contains non-ASCII characters, false otherwise
      */
     virtual OFBool containsExtendedCharacters(const OFBool checkAllStrings = OFFalse);
@@ -357,6 +358,8 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      *  @param maxLen maximum number of characters allowed for a single value (0 = no check)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index b7751ad260684a1c0923c9ba1ba399523fc4ced0..464dadf0bc3b4f18aa556e852ed6bc85cf76df43 100644 (file)
@@ -1,9 +1,9 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2011-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  This software and supporting documentation are maintained by
+ *  This software and supporting documentation were developed by
  *
  *    OFFIS e.V.
  *    R&D Division Health
@@ -11,9 +11,9 @@
  *    D-26121 Oldenburg, Germany
  *
  *
- *  Module: dcmiod
+ *  Module: dcmdata
  *
- *  Author: Michael Onken
+ *  Author: Joerg Riesmeier, Michael Onken
  *
  *  Purpose: Static helper functionality for dcmdata module
  *
 #ifndef DCDATUTL_H
 #define DCDATUTL_H
 
-#include "dcmtk/config/osconfig.h"
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 #include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/dcmdata/dcdefine.h"
 #include "dcmtk/dcmdata/dcxfer.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 
-/** Class with helper functions used within the dcmiod module (and beyond)
+
+/** Class with helper functions used within the dcmdata module (and beyond)
  */
 class DCMTK_DCMDATA_EXPORT DcmDataUtil
 {
@@ -53,7 +54,7 @@ public:
    *          ERM_metaOnly.
    *  @return EC_Normal if successful, an error code otherwise
    */
-  static OFCondition getSOPInstanceFromFile(const OFString &filename,
+  static OFCondition getSOPInstanceFromFile(const OFFilename &filename,
                                             OFString &sopClassUID,
                                             OFString &sopInstanceUID,
                                             OFString &transferSyntaxUID,
index 95c4361276d9c4e3ae0f5ead7ac32d1cbbcdead6..3ffc06db4a7b61a2abc1649d968c955902345d21 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2015, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -133,6 +133,12 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
         AP_GeneralPurposeBDMPEG4HPatLV41,
         /// General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
         AP_GeneralPurposeBDMPEG4HPatLV41BD,
+        /// General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+        AP_GeneralPurposeBDMPEG4HPatLV42_2D,
+        /// General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+        AP_GeneralPurposeBDMPEG4HPatLV42_3D,
+        /// General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
+        AP_GeneralPurposeBDMPEG4StereoHPatLV42,
         /// General Purpose USB and Flash Memory Interchange with JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)
         AP_USBandFlashJPEG,
         /// General Purpose USB and Flash Memory Interchange with JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)
@@ -1074,6 +1080,18 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
                                                const OFString &referencedFileID,
                                                const OFFilename &sourceFilename);
 
+    /** create or update tract record and copy required values from dataset
+     *  @param record record to be updated, use NULL to create a new one
+     *  @param fileformat DICOM dataset of the current file
+     *  @param referencedFileID value of the Referenced File ID attribute
+     *  @param sourceFilename name of the source DICOM file
+     *  @return pointer to new or updated record, NULL if an error occurred
+     */
+    DcmDirectoryRecord *buildTractRecord(DcmDirectoryRecord *record,
+                                         DcmFileFormat *fileformat,
+                                         const OFString &referencedFileID,
+                                         const OFFilename &sourceFilename);
+
     /** create or update image record and copy required values from dataset
      *  @param record record to be updated, use NULL to create a new one
      *  @param fileformat DICOM dataset of the current file
index 1f6e5c11909e53d0e8f77d73bc9e0192b35d3700..829d379a68a38428ab30c8e4465d5ad913a408d2 100644 (file)
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad
-**   Date: 2015-09-18 11:18:13
+**   Date: 2016-01-25 17:53:33
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdeftag
 **
 **   From: ../data/dicom.dic
 
 #include "dcmtk/dcmdata/dctagkey.h"
 
-#define DCM_DICT_DEFTAG_BUILD_DATE "2015-09-18 11:18:13"
+#define DCM_DICT_DEFTAG_BUILD_DATE "2016-01-25 17:53:33"
 
 
 /*
 ** Fixed Tags in ascending (gggg,eeee) order.
-** Number of entries: 3956
+** Number of entries: 4019
 ** Tags with a repeating component (repeating tags) are listed later.
 */
 #define DCM_CommandGroupLength                   DcmTagKey(0x0000, 0x0000)
 #define DCM_QueryRetrieveLevel                   DcmTagKey(0x0008, 0x0052)
 #define DCM_QueryRetrieveView                    DcmTagKey(0x0008, 0x0053)
 #define DCM_RetrieveAETitle                      DcmTagKey(0x0008, 0x0054)
+#define DCM_StationAETitle                       DcmTagKey(0x0008, 0x0055)
 #define DCM_InstanceAvailability                 DcmTagKey(0x0008, 0x0056)
 #define DCM_FailedSOPInstanceUIDList             DcmTagKey(0x0008, 0x0058)
 #define DCM_Modality                             DcmTagKey(0x0008, 0x0060)
 #define DCM_FailureReason                        DcmTagKey(0x0008, 0x1197)
 #define DCM_FailedSOPSequence                    DcmTagKey(0x0008, 0x1198)
 #define DCM_ReferencedSOPSequence                DcmTagKey(0x0008, 0x1199)
+#define DCM_OtherFailuresSequence                DcmTagKey(0x0008, 0x119a)
 #define DCM_StudiesContainingOtherReferencedInstancesSequence DcmTagKey(0x0008, 0x1200)
 #define DCM_RelatedSeriesSequence                DcmTagKey(0x0008, 0x1250)
 #define DCM_RETIRED_LossyImageCompressionRetired DcmTagKey(0x0008, 0x2110)
 #define DCM_IssuerOfPatientID                    DcmTagKey(0x0010, 0x0021)
 #define DCM_TypeOfPatientID                      DcmTagKey(0x0010, 0x0022)
 #define DCM_IssuerOfPatientIDQualifiersSequence  DcmTagKey(0x0010, 0x0024)
+#define DCM_SourcePatientGroupIdentificationSequence DcmTagKey(0x0010, 0x0026)
+#define DCM_GroupOfPatientsIdentificationSequence DcmTagKey(0x0010, 0x0027)
+#define DCM_SubjectRelativePositionInImage       DcmTagKey(0x0010, 0x0028)
 #define DCM_PatientBirthDate                     DcmTagKey(0x0010, 0x0030)
 #define DCM_PatientBirthTime                     DcmTagKey(0x0010, 0x0032)
 #define DCM_PatientSex                           DcmTagKey(0x0010, 0x0040)
 #define DCM_PatientPrimaryLanguageModifierCodeSequence DcmTagKey(0x0010, 0x0102)
 #define DCM_QualityControlSubject                DcmTagKey(0x0010, 0x0200)
 #define DCM_QualityControlSubjectTypeCodeSequence DcmTagKey(0x0010, 0x0201)
+#define DCM_StrainDescription                    DcmTagKey(0x0010, 0x0212)
+#define DCM_StrainNomenclature                   DcmTagKey(0x0010, 0x0213)
+#define DCM_StrainStockNumber                    DcmTagKey(0x0010, 0x0214)
+#define DCM_StrainSourceRegistryCodeSequence     DcmTagKey(0x0010, 0x0215)
+#define DCM_StrainStockSequence                  DcmTagKey(0x0010, 0x0216)
+#define DCM_StrainSource                         DcmTagKey(0x0010, 0x0217)
+#define DCM_StrainAdditionalInformation          DcmTagKey(0x0010, 0x0218)
+#define DCM_StrainCodeSequence                   DcmTagKey(0x0010, 0x0219)
 #define DCM_OtherPatientIDs                      DcmTagKey(0x0010, 0x1000)
 #define DCM_OtherPatientNames                    DcmTagKey(0x0010, 0x1001)
 #define DCM_OtherPatientIDsSequence              DcmTagKey(0x0010, 0x1002)
 #define DCM_SegmentationFractionalType           DcmTagKey(0x0062, 0x0010)
 #define DCM_SegmentedPropertyTypeModifierCodeSequence DcmTagKey(0x0062, 0x0011)
 #define DCM_UsedSegmentsSequence                 DcmTagKey(0x0062, 0x0012)
+#define DCM_TrackingID                           DcmTagKey(0x0062, 0x0020)
+#define DCM_TrackingUID                          DcmTagKey(0x0062, 0x0021)
 #define DCM_DeformableRegistrationSequence       DcmTagKey(0x0064, 0x0002)
 #define DCM_SourceFrameOfReferenceUID            DcmTagKey(0x0064, 0x0003)
 #define DCM_DeformableRegistrationGridSequence   DcmTagKey(0x0064, 0x0005)
 #define DCM_LongTrianglePointIndexList           DcmTagKey(0x0066, 0x0041)
 #define DCM_LongEdgePointIndexList               DcmTagKey(0x0066, 0x0042)
 #define DCM_LongVertexPointIndexList             DcmTagKey(0x0066, 0x0043)
+#define DCM_TrackSetSequence                     DcmTagKey(0x0066, 0x0101)
+#define DCM_TrackSequence                        DcmTagKey(0x0066, 0x0102)
+#define DCM_RecommendedDisplayCIELabValueList    DcmTagKey(0x0066, 0x0103)
+#define DCM_TrackingAlgorithmIdentificationSequence DcmTagKey(0x0066, 0x0104)
+#define DCM_TrackSetNumber                       DcmTagKey(0x0066, 0x0105)
+#define DCM_TrackSetLabel                        DcmTagKey(0x0066, 0x0106)
+#define DCM_TrackSetDescription                  DcmTagKey(0x0066, 0x0107)
+#define DCM_TrackSetAnatomicalTypeCodeSequence   DcmTagKey(0x0066, 0x0108)
+#define DCM_MeasurementsSequence                 DcmTagKey(0x0066, 0x0121)
+#define DCM_TrackSetStatisticsSequence           DcmTagKey(0x0066, 0x0124)
+#define DCM_FloatingPointValues                  DcmTagKey(0x0066, 0x0125)
+#define DCM_TrackPointIndexList                  DcmTagKey(0x0066, 0x0129)
+#define DCM_TrackStatisticsSequence              DcmTagKey(0x0066, 0x0130)
+#define DCM_MeasurementValuesSequence            DcmTagKey(0x0066, 0x0132)
+#define DCM_DiffusionAcquisitionCodeSequence     DcmTagKey(0x0066, 0x0133)
+#define DCM_DiffusionModelCodeSequence           DcmTagKey(0x0066, 0x0134)
 #define DCM_ImplantSize                          DcmTagKey(0x0068, 0x6210)
 #define DCM_ImplantTemplateVersion               DcmTagKey(0x0068, 0x6221)
 #define DCM_ReplacedImplantTemplateSequence      DcmTagKey(0x0068, 0x6222)
 #define DCM_RegistrationSequence                 DcmTagKey(0x0070, 0x0308)
 #define DCM_MatrixRegistrationSequence           DcmTagKey(0x0070, 0x0309)
 #define DCM_MatrixSequence                       DcmTagKey(0x0070, 0x030a)
+#define DCM_FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix DcmTagKey(0x0070, 0x030b)
 #define DCM_FrameOfReferenceTransformationMatrixType DcmTagKey(0x0070, 0x030c)
 #define DCM_RegistrationTypeCodeSequence         DcmTagKey(0x0070, 0x030d)
 #define DCM_FiducialDescription                  DcmTagKey(0x0070, 0x030f)
 #define DCM_BeamOrderIndex                       DcmTagKey(0x0074, 0x1324)
 #define DCM_DoubleExposureMeterset               DcmTagKey(0x0074, 0x1338)
 #define DCM_DoubleExposureFieldDelta             DcmTagKey(0x0074, 0x133a)
+#define DCM_BrachyTaskSequence                   DcmTagKey(0x0074, 0x1401)
+#define DCM_ContinuationStartTotalReferenceAirKerma DcmTagKey(0x0074, 0x1402)
+#define DCM_ContinuationEndTotalReferenceAirKerma DcmTagKey(0x0074, 0x1403)
+#define DCM_ContinuationPulseNumber              DcmTagKey(0x0074, 0x1404)
+#define DCM_ChannelDeliveryOrderSequence         DcmTagKey(0x0074, 0x1405)
+#define DCM_ReferencedChannelNumber              DcmTagKey(0x0074, 0x1406)
+#define DCM_StartCumulativeTimeWeight            DcmTagKey(0x0074, 0x1407)
+#define DCM_EndCumulativeTimeWeight              DcmTagKey(0x0074, 0x1408)
+#define DCM_OmittedChannelSequence               DcmTagKey(0x0074, 0x1409)
+#define DCM_ReasonForChannelOmission             DcmTagKey(0x0074, 0x140a)
+#define DCM_ReasonForChannelOmissionDescription  DcmTagKey(0x0074, 0x140b)
+#define DCM_ChannelDeliveryOrderIndex            DcmTagKey(0x0074, 0x140c)
+#define DCM_ChannelDeliveryContinuationSequence  DcmTagKey(0x0074, 0x140d)
+#define DCM_OmittedApplicationSetupSequence      DcmTagKey(0x0074, 0x140e)
 #define DCM_ImplantAssemblyTemplateName          DcmTagKey(0x0076, 0x0001)
 #define DCM_ImplantAssemblyTemplateIssuer        DcmTagKey(0x0076, 0x0003)
 #define DCM_ImplantAssemblyTemplateVersion       DcmTagKey(0x0076, 0x0006)
 #define DCM_AverageBeamDosePointDepth            DcmTagKey(0x300a, 0x008d)
 #define DCM_AverageBeamDosePointEquivalentDepth  DcmTagKey(0x300a, 0x008e)
 #define DCM_AverageBeamDosePointSSD              DcmTagKey(0x300a, 0x008f)
+#define DCM_BeamDoseType                         DcmTagKey(0x300a, 0x0090)
+#define DCM_AlternateBeamDose                    DcmTagKey(0x300a, 0x0091)
+#define DCM_AlternateBeamDoseType                DcmTagKey(0x300a, 0x0092)
 #define DCM_NumberOfBrachyApplicationSetups      DcmTagKey(0x300a, 0x00a0)
 #define DCM_BrachyApplicationSetupDoseSpecificationPoint DcmTagKey(0x300a, 0x00a2)
 #define DCM_BrachyApplicationSetupDose           DcmTagKey(0x300a, 0x00a4)
 #define DCM_RadiationAtomicNumber                DcmTagKey(0x300a, 0x0304)
 #define DCM_RadiationChargeState                 DcmTagKey(0x300a, 0x0306)
 #define DCM_ScanMode                             DcmTagKey(0x300a, 0x0308)
+#define DCM_ModulatedScanModeType                DcmTagKey(0x300a, 0x0309)
 #define DCM_VirtualSourceAxisDistances           DcmTagKey(0x300a, 0x030a)
 #define DCM_SnoutSequence                        DcmTagKey(0x300a, 0x030c)
 #define DCM_SnoutPosition                        DcmTagKey(0x300a, 0x030d)
 #define DCM_PatientSupportType                   DcmTagKey(0x300a, 0x0350)
 #define DCM_PatientSupportID                     DcmTagKey(0x300a, 0x0352)
 #define DCM_PatientSupportAccessoryCode          DcmTagKey(0x300a, 0x0354)
+#define DCM_TrayAccessoryCode                    DcmTagKey(0x300a, 0x0355)
 #define DCM_FixationLightAzimuthalAngle          DcmTagKey(0x300a, 0x0356)
 #define DCM_FixationLightPolarAngle              DcmTagKey(0x300a, 0x0358)
 #define DCM_MetersetRate                         DcmTagKey(0x300a, 0x035a)
 #define DCM_DeviceMotionExecutionMode            DcmTagKey(0x300a, 0x0451)
 #define DCM_DeviceMotionObservationMode          DcmTagKey(0x300a, 0x0452)
 #define DCM_DeviceMotionParameterCodeSequence    DcmTagKey(0x300a, 0x0453)
+#define DCM_DistalDepthFraction                  DcmTagKey(0x300a, 0x0501)
+#define DCM_DistalDepth                          DcmTagKey(0x300a, 0x0502)
+#define DCM_NominalRangeModulatioFractions       DcmTagKey(0x300a, 0x0503)
+#define DCM_NominalRangeModulatedRegionDepths    DcmTagKey(0x300a, 0x0504)
+#define DCM_DepthDoseParametersSequence          DcmTagKey(0x300a, 0x0505)
+#define DCM_DeliveredDepthDoseParametersSequence DcmTagKey(0x300a, 0x0506)
+#define DCM_DeliveredDistalDepthFraction         DcmTagKey(0x300a, 0x0507)
+#define DCM_DeliveredDistalDepth                 DcmTagKey(0x300a, 0x0508)
+#define DCM_DeliveredNominalRangeModulationFractions DcmTagKey(0x300a, 0x0509)
+#define DCM_DeliveredNominalRangeModulatedRegionDepths DcmTagKey(0x300a, 0x0510)
+#define DCM_DeliveredReferenceDoseDefinition     DcmTagKey(0x300a, 0x0511)
+#define DCM_ReferenceDoseDefinition              DcmTagKey(0x300a, 0x0512)
 #define DCM_ReferencedRTPlanSequence             DcmTagKey(0x300c, 0x0002)
 #define DCM_ReferencedBeamSequence               DcmTagKey(0x300c, 0x0004)
 #define DCM_ReferencedBeamNumber                 DcmTagKey(0x300c, 0x0006)
index c10b90e53c2c45383777cba80218e16c1e89dfd8..249b5d8f0057473c7043b3d13d2b9673d14409e5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -122,7 +122,9 @@ typedef enum {
     /// plan
     ERT_Plan = 44,
     /// surface scan
-    ERT_SurfaceScan = 45
+    ERT_SurfaceScan = 45,
+    /// tractography
+    ERT_Tract = 46
 } E_DirRecType;
 
 
index 09f1844da03abcef3b045e84faba592966d3bd29..bc330ad1a07469e3cfddddbdc612cf77be9419a8 100644 (file)
@@ -41,6 +41,13 @@ class DCMTK_DCMDATA_EXPORT DcmElement
 
   public:
 
+    // be friend with "greater than" and "less than" operators that are defined
+    // outside of this class
+    friend OFBool operator< (const DcmElement& lhs, const DcmElement& rhs);
+    friend OFBool operator> (const DcmElement& lhs, const DcmElement& rhs);
+    friend OFBool operator<=(const DcmElement& lhs, const DcmElement& rhs);
+    friend OFBool operator>=(const DcmElement& lhs, const DcmElement& rhs);
+
     /** constructor.
      *  Create new element from given tag and length.
      *  @param tag DICOM tag for the new element
@@ -77,7 +84,9 @@ class DCMTK_DCMDATA_EXPORT DcmElement
      *          -1 if either the value of the first component that does not match
      *          is lower in this object than in rhs, or all compared components match
      *          but this object has fewer components than rhs. Also returned if rhs
-     *          cannot be casted to this object type.
+     *          cannot be casted to this object type or both objects are of
+     *          different VR (i.e. the DcmEVR returned by the element's ident()
+     *          call are different).
      *          1 if either the value of the first component that does not match
      *          is greater in this object than in rhs object, or all compared
      *          components match but the this component is longer.
@@ -864,5 +873,54 @@ class DCMTK_DCMDATA_EXPORT DcmElement
     Uint8 *fValue;
 };
 
+/** Checks whether left hand side element is smaller than right hand side
+ *  element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs, OFFalse otherwise
+ */
+inline OFBool operator< (const DcmElement& lhs, const DcmElement& rhs)
+{
+  return ( lhs.compare(rhs) < 0 );
+}
+
+/** Checks whether left hand side element is greater than right hand side
+ *  element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs, OFFalse otherwise
+ */
+inline OFBool operator> (const DcmElement& lhs, const DcmElement& rhs)
+{
+    return rhs < lhs;
+}
+
+/** Checks whether left hand side element is smaller than or equal to right hand
+ *  side element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator<=(const DcmElement& lhs, const DcmElement& rhs)
+{
+    return !(lhs > rhs);
+}
+
+/** Checks whether left hand side element is greater than or equal to right hand
+ *  side element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator>=(const DcmElement& lhs, const DcmElement& rhs)
+{
+    return !(lhs < rhs);
+}
 
 #endif // DCELEM_H
index 3150b55d90ebfddc4cb42baeeed222ba567ff4b7..0c917352292c7c2441250c4cccbf4c7b42f0b83d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -47,6 +47,13 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 {
   public:
 
+    // be friend with "greater than" and "less than" operators that are defined
+    // outside of this class
+    friend OFBool operator< (const DcmItem& lhs, const DcmItem& rhs);
+    friend OFBool operator> (const DcmItem& lhs, const DcmItem& rhs);
+    friend OFBool operator<=(const DcmItem& lhs, const DcmItem& rhs);
+    friend OFBool operator>=(const DcmItem& lhs, const DcmItem& rhs);
+
     /** default constructor
      */
     DcmItem();
@@ -66,7 +73,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** assignment operator. Private creator cache is not copied
      *  as it is also the case for clone().
-     *  @param the item to be copied
+     *  @param obj the item to be copied
+     *  @return Reference to this object after assignment
      */
     DcmItem &operator=(const DcmItem &obj);
 
@@ -74,7 +82,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  with a given object of the same type. The tag of the element is also
      *  considered as the first component that is compared, followed by the
      *  object types (VR, i.e. DCMTK'S EVR) and the comparison of all value
-     *  components of the object, preferrably in the order declared in the
+     *  components of the object, preferably in the order declared in the
      *  object (if applicable). For item values that means that all elements
      *  within the items are compared to each other in ascending tag order.
      *  This may be an expensive operation.
@@ -164,7 +172,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  VR field and the value itself, for items and sequences it returns
      *  the length of the complete item or sequence including delimitation tags
      *  if applicable.
-     *  If length encodig is set to be explicit and the total item size is
+     *  If length encoding is set to be explicit and the total item size is
      *  larger than the available 32-bit length field, then undefined length
      *  is returned. If "dcmWriteOversizedSeqsAndItemsImplicit" is disabled,
      *  also the internal DcmObject errorFlag is set to EC_SeqOrItemContentOverflow
@@ -180,7 +188,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     /** calculate the value length (without attribute tag, VR and length field)
      *  of this DICOM element when encoded with the given transfer syntax and
      *  the given encoding type for sequences.
-     *  If length encodig is set to be explicit and the item content is larger
+     *  If length encoding is set to be explicit and the item content is larger
      *  than the available 32-bit length field, then undefined length is
      *  returned. If "dcmWriteOversizedSeqsAndItemsUndefined" is disabled,
      *  also the internal DcmObject errorFlag is set to
@@ -277,8 +285,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  character codes below 128 are considered to be ASCII codes and all others are
      *  considered to be non-ASCII.
      *  @param checkAllStrings if true, also check elements with string values not affected
-     *    by SpecificCharacterSet (0008,0005), default: only check PN, LO, LT, SH, ST, UC
-     *    and UT
+     *    by SpecificCharacterSet (0008,0005). By default, only check PN, LO, LT, SH, ST,
+     *    UC and UT.
      *  @return true if object contains non-ASCII characters, false otherwise
      */
     virtual OFBool containsExtendedCharacters(const OFBool checkAllStrings = OFFalse);
@@ -622,7 +630,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** find element and get value as a C++ string (only one component).
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  Since the getOFString() routine is called internally the resulting string is normalized, i.e.
      *  leading and/or trailing spaces are removed according to the associated value representation,
      *  or the element value is converted to a character string (for non-string VRs) - see documentation
@@ -643,7 +651,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** find element and get value as a C++ string (all components).
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  Since the getOFStringArray() routine is called internally the resulting string is normalized,
      *  i.e. leading and/or trailing spaces are removed according to the associated value representation
      *  or the element values are converted to character strings (for non-string VRs) - see documentation
@@ -743,7 +751,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                       const OFBool searchIntoSub = OFFalse);
 
     /** find element and get value as an unsigned 32-bit integer.
-     *  Applicable to the following VRs: UL
+     *  Applicable to the following VRs: OL, UL
      *  The result variable 'value' is automatically set to zero if an error occurs.
      *  @param tagKey DICOM tag specifying the attribute to be searched for
      *  @param value variable in which the element value is stored
@@ -757,7 +765,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                  const OFBool searchIntoSub = OFFalse);
 
     /** find element and get value as an array of unsigned 32-bit integers.
-     *  Applicable to the following VRs: UL
+     *  Applicable to the following VRs: OL, UL
      *  The result variable 'value' is automatically set to NULL if an error occurs.
      *  @param tagKey DICOM tag specifying the attribute to be searched for
      *  @param value variable in which the reference to the element value is stored
@@ -799,7 +807,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                       const OFBool searchIntoSub = OFFalse);
 
     /** find element and get value as a (signed) long integer.
-     *  Applicable to the following VRs: IS, SL, SS, UL, US
+     *  Applicable to the following VRs: IS, OL, SL, SS, UL, US
      *  The result variable 'value' is automatically set to zero if an error occurs.
      *  @param tagKey DICOM tag specifying the attribute to be searched for
      *  @param value variable in which the element value is stored
@@ -961,7 +969,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param value string value to be set for the new element (might be empty or NULL)
      *  @param replaceOld flag indicating whether to replace an existing element or not
@@ -973,7 +981,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  Please note that since the length of the string has to be specified explicitly, the string
      *  can contain more than one NULL byte.
      *  @param tag DICOM tag specifying the attribute to be created
@@ -1067,7 +1075,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                         const OFBool replaceOld = OFTrue);
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
-     *  Applicable to the following VRs: UL
+     *  Applicable to the following VRs: OL, UL
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param value value to be set for the new element
      *  @param pos index of the value to be set (0..vm). A value can be appended to
@@ -1080,6 +1088,19 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                    const unsigned long pos = 0,
                                    const OFBool replaceOld = OFTrue);
 
+    /** create a new element, put specified value to it and insert the element into the dataset/item.
+     *  Applicable to the following VRs: OL, UL
+     *  @param tag DICOM tag specifying the attribute to be created
+     *  @param value value to be set for the new element
+     *  @param count number of values (not bytes!) to be copied from 'value'
+     *  @param replaceOld flag indicating whether to replace an existing element or not
+     *  @return EC_Normal upon success, an error code otherwise.
+     */
+    OFCondition putAndInsertUint32Array(const DcmTag &tag,
+                                       const Uint32 *value,
+                                       const unsigned long count,
+                                       const OFBool replaceOld = OFTrue);
+
     /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: SL
      *  @param tag DICOM tag specifying the attribute to be created
@@ -1166,7 +1187,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** create a new element (with no value) and insert it into the dataset/item.
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SQ, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SQ, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param replaceOld flag indicating whether to replace an existing element or not
      *  @return EC_Normal upon success, an error code otherwise.
@@ -1315,6 +1336,56 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     DcmPrivateTagCache privateCreatorCache;
 };
 
+/** Checks whether left hand side item is smaller than right hand side
+ *  item. Uses DcmItem's compare() method in order to perform the
+ *  comparison. See DcmItem::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs, OFFalse otherwise
+ */
+inline OFBool operator< (const DcmItem& lhs, const DcmItem& rhs)
+{
+  return ( lhs.compare(rhs) < 0 );
+}
+
+/** Checks whether left hand side item is greater than right hand side
+ *  item. Uses DcmItem's compare() method in order to perform the
+ *  comparison. See DcmItem::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs, OFFalse otherwise
+ */
+inline OFBool operator> (const DcmItem& lhs, const DcmItem& rhs)
+{
+  return rhs < lhs;
+}
+
+/** Checks whether left hand side item is smaller than or equal to right hand
+ *  side item. Uses DcmItem's compare() method in order to perform the
+ *  comparison. See DcmItem::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator<=(const DcmItem& lhs, const DcmItem& rhs)
+{
+  return !(lhs > rhs);
+}
+
+/** Checks whether left hand side element is greater than or equal to right hand
+ *  side element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator>=(const DcmItem& lhs, const DcmItem& rhs)
+{
+  return !(lhs < rhs);
+}
+
 //
 // SUPPORT FUNCTIONS
 //
index 63dfff34e1946ce9f5aaa6dca94c06c1dde69dc4..8fc390393f1a30b6359ab02a63e95fb55a0cc42f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 
 
 /// magic string identifying DICOM files
-#define DCM_Magic                       "DICM"
+#define DCM_Magic "DICM"
 
 /// length of magic string identifying DICOM files
-#define DCM_MagicLen                    4
+#define DCM_MagicLen 4
 
 /// length of DICOM file preamble, in bytes
-#define DCM_PreambleLen                 128
+#define DCM_PreambleLen 128
 
 /// transfer syntax used for encoding DICOM meta-headers
 #define META_HEADER_DEFAULT_TRANSFERSYNTAX EXS_LittleEndianExplicit
@@ -59,7 +59,7 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
     DcmMetaInfo(const DcmMetaInfo &old);
 
     /** assignment operator.
-     *  @param the metainfo to be copied
+     *  @param obj the metainfo to be copied
      */
     DcmMetaInfo &operator=(const DcmMetaInfo &obj);
 
index a9a264c3a13ff14abd770a0316d4c848c02e6745..ed8c18de3ce9884dd400b77bbedae47206cf5043 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -41,9 +41,15 @@ class DcmInputStream;
 class DcmWriteCache;
 class DcmSpecificCharacterSet;
 
+// include this file in doxygen documentation
+
+/** @file dcobject.h
+ *  @brief interface to DICOM object/dataset handling
+ */
+
 // Undefined Length Identifier now defined in dctypes.h
 
-// Maxinum number of read bytes for a Value Element
+// Maximum number of read bytes for a Value Element
 const Uint32 DCM_MaxReadLength = 4096;
 
 // Maximum length of tag and length in a DICOM element
@@ -59,13 +65,13 @@ const Uint32 DCM_OptPrintValueLength = 40;
 const Uint32 DCM_OptPrintAttributeNameLength = 35;
 
 /** This flags defines whether automatic correction should be applied to input
- *  data (e.g. stripping of padding blanks, removal of blanks in UIDs, etc).
+ *  data (e.g.\ stripping of padding blanks, removal of blanks in UIDs, etc).
  *  Default is enabled.
  */
 extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableAutomaticInputDataCorrection; /* default OFTrue */
 
 /** This flag defines the handling of illegal odd-length attributes: If flag is
- *  true, odd lengths are respected (i.e. an odd number of bytes is read from
+ *  true, odd lengths are respected (i.e.\ an odd number of bytes is read from
  *  the input stream.) After successful reading, padding to even number of bytes
  *  is enforced by adding a zero pad byte if dcmEnableAutomaticInputDataCorrection
  *  is true. Otherwise the odd number of bytes remains as read.
@@ -91,7 +97,7 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableCP246Support; /* default O
 
 /** DCMTK releases up to 3.5.3 created a non-conforming byte stream
  *  as input to the MAC algorithm when creating or verifying digital signatures
- *  including compressed pixel data (i.e. signatures including attribute
+ *  including compressed pixel data (i.e.\ signatures including attribute
  *  (7FE0,0010) in an encapsulated transfer syntax). This has been fixed
  *  in DCMTK 3.5.4, but this flag allows to revert to the old behavior
  *  in order to create or verify signatures that are compatible with older
@@ -144,7 +150,7 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmPreferLengthFieldSizeFromDataDic
 extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmReadImplPrivAttribMaxLengthAsSQ; /* default OFFalse */
 
 /** This flag indicates, whether parsing errors during reading
- *  should be ignored, ie whether the parser should try to recover and
+ *  should be ignored, i.e.\ whether the parser should try to recover and
  *  parse the rest of the stream.
  *  This flag does not work for all parsing errors (at this time)
  *  making sense but was introduced afterwards.
@@ -157,7 +163,7 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmIgnoreParsingErrors; /* default
  *  Data attribute. To prevent the parser for "stumbling" over that
  *  garbage, it is possible to tell the parser to stop after a
  *  specific element. The flag is only sensitive to elements on
- *  dataset level, ie. inside sequence any occurence of the specified
+ *  dataset level, i.e. inside sequence any occurrence of the specified
  *  tag is ignored. Caution: Note that if Pixel Data is chosen
  *  as stop element, any attributes behind will not be parsed, e. g.
  *  any digital signature attributes coming after.
@@ -570,7 +576,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
     virtual OFCondition loadAllDataIntoMemory() = 0;
 
     /** return the current value of the Length field (which is different from the functionality
-     *  of the public getLength method). Only needed for internal purposes and for checker tools
+     *  of the public getLength() method). Only needed for internal purposes and for checker tools
      *  that verify values against the length field.
      *  @return current value of length field
      */
@@ -578,7 +584,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
 
  protected:
 
-    /** print line indentation, e.g. a couple of spaces for each nesting level.
+    /** print line indentation, e.g.\ a couple of spaces for each nesting level.
      *  Depending on the value of 'flags' other visualizations are also possible.
      *  @param out output stream
      *  @param flags used to customize the output (see DCMTypes::PF_xxx)
@@ -616,8 +622,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
                           DcmTag *tag = NULL);
 
     /** print given text with element information.
-     *  Calls printInfoLineStart() and printInfoLineEnd() to frame the
-     *  'info' text.
+     *  Calls printInfoLineStart() and printInfoLineEnd() to frame the 'info' text.
      *  @param out output stream
      *  @param flags used to customize the output (see DCMTypes::PF_xxx)
      *  @param level current level of nested items. Used for indentation.
index b66e8a8ca9538fdb0f9b726ae1535a11c41b10ee..5677d213258632d6fc3a163e82b9be0a5f9f1ee4 100644 (file)
@@ -68,9 +68,9 @@ public:
      *  with a given object of the same type. The tag of the element is also
      *  considered as the first component that is compared, followed by the
      *  object types (VR, i.e. DCMTK'S EVR) and the comparison of all value
-     *  components of the object, preferrably in the order declared in the
+     *  components of the object, preferably in the order declared in the
      *  object (if applicable). For sequences that means that all
-     *  containted items are compared element by element, so this may be
+     *  contained items are compared element by element, so this may be
      *  an expensive operation!
      *  @param  rhs the right hand side of the comparison
      *  @return 0 if the object values are equal.
@@ -196,7 +196,7 @@ public:
      *  VR field and the value itself, for items and sequences it returns
      *  the length of the complete item or sequence including delimitation tags
      *  if applicable.
-     *  If length encodig is set to be explicit and the total sequence size is
+     *  If length encoding is set to be explicit and the total sequence size is
      *  larger than the available 32-bit length field, then undefined length
      *  is returned. If "dcmWriteOversizedSeqsAndItemsUndefined" is disabled,
      *  also the internal DcmObject errorFlag is set to EC_SeqOrItemContentOverflow
@@ -212,7 +212,7 @@ public:
     /** calculate the value length (without attribute tag, VR and length field)
      *  of this DICOM element when encoded with the given transfer syntax and
      *  the given encoding type for sequences.
-     *  If length encodig is set to be explicit and the total sequence size is
+     *  If length encoding is set to be explicit and the total sequence size is
      *  larger than the available 32-bit length field, then undefined length
      *  is returned. If "dcmWriteOversizedSeqsAndItemsImplicit" is disabled,
      *  also the internal DcmObject errorFlag is set to
@@ -308,8 +308,8 @@ public:
      *  character codes below 128 are considered to be ASCII codes and all others are
      *  considered to be non-ASCII.
      *  @param checkAllStrings if true, also check elements with string values not affected
-     *    by SpecificCharacterSet (0008,0005), default: only check PN, LO, LT, SH, ST, UC
-     *    and UT
+     *    by SpecificCharacterSet (0008,0005). By default, only check PN, LO, LT, SH, ST,
+     *    UC and UT.
      *  @return true if object contains non-ASCII characters, false otherwise
      */
     virtual OFBool containsExtendedCharacters(const OFBool checkAllStrings = OFFalse);
index 3d0447d5c9ebb7875a3a922ed0cccfb29df0c8d1..2290d6caff5d576d43ee013814ff9376137d5850 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -94,6 +94,7 @@
 #include "dcmtk/dcmdata/dcvrfd.h"
 #include "dcmtk/dcmdata/dcvrof.h"
 #include "dcmtk/dcmdata/dcvrod.h"
+#include "dcmtk/dcmdata/dcvrol.h"
 
 // misc supporting tools
 #include "dcmtk/dcmdata/cmdlnarg.h"
index 53c30b2647f7e1cb92c7dd34f00469be6308eaef..7d2254aafa0821236374b6e098ca793a48b0eb69 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -363,7 +363,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 ** Defined SOP Class UIDs according to DICOM standard
 */
 
-// Storage
+// Storage (DICOM)
 #define UID_RETIRED_StoredPrintStorage                             "1.2.840.10008.5.1.1.27"
 #define UID_RETIRED_HardcopyGrayscaleImageStorage                  "1.2.840.10008.5.1.1.29"
 #define UID_RETIRED_HardcopyColorImageStorage                      "1.2.840.10008.5.1.1.30"
@@ -433,6 +433,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_DeformableSpatialRegistrationStorage                   "1.2.840.10008.5.1.4.1.1.66.3"
 #define UID_SegmentationStorage                                    "1.2.840.10008.5.1.4.1.1.66.4"
 #define UID_SurfaceSegmentationStorage                             "1.2.840.10008.5.1.4.1.1.66.5"
+#define UID_TractographyResultsStorage                             "1.2.840.10008.5.1.4.1.1.66.6"
 #define UID_RealWorldValueMappingStorage                           "1.2.840.10008.5.1.4.1.1.67"
 #define UID_SurfaceScanMeshStorage                                 "1.2.840.10008.5.1.4.1.1.68.1"
 #define UID_SurfaceScanPointCloudStorage                           "1.2.840.10008.5.1.4.1.1.68.2"
@@ -477,6 +478,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RadiopharmaceuticalRadiationDoseSRStorage              "1.2.840.10008.5.1.4.1.1.88.68"
 #define UID_ColonCADSRStorage                                      "1.2.840.10008.5.1.4.1.1.88.69"
 #define UID_ImplantationPlanSRDocumentStorage                      "1.2.840.10008.5.1.4.1.1.88.70"
+#define UID_AcquisitionContextSRStorage                            "1.2.840.10008.5.1.4.1.1.88.71"
 #define UID_EncapsulatedPDFStorage                                 "1.2.840.10008.5.1.4.1.1.104.1"
 #define UID_EncapsulatedCDAStorage                                 "1.2.840.10008.5.1.4.1.1.104.2"
 #define UID_PositronEmissionTomographyImageStorage                 "1.2.840.10008.5.1.4.1.1.128"
@@ -493,6 +495,8 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RTTreatmentSummaryRecordStorage                        "1.2.840.10008.5.1.4.1.1.481.7"
 #define UID_RTIonPlanStorage                                       "1.2.840.10008.5.1.4.1.1.481.8"
 #define UID_RTIonBeamsTreatmentRecordStorage                       "1.2.840.10008.5.1.4.1.1.481.9"
+#define UID_RTBeamsDeliveryInstructionStorage                      "1.2.840.10008.5.1.4.34.7"
+#define UID_RTBrachyApplicationSetupDeliveryInstructionStorage     "1.2.840.10008.5.1.4.34.10"
 #define UID_HangingProtocolStorage                                 "1.2.840.10008.5.1.4.38.1"
 #define UID_GenericImplantTemplateStorage                          "1.2.840.10008.5.1.4.43.1"
 #define UID_ImplantAssemblyTemplateStorage                         "1.2.840.10008.5.1.4.44.1"
@@ -525,7 +529,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_GETCompositeInstanceRootRetrieve                       "1.2.840.10008.5.1.4.1.2.4.3"
 #define UID_GETCompositeInstanceRetrieveWithoutBulkData            "1.2.840.10008.5.1.4.1.2.5.3"
 
-// Worklist
+// Modality Worklist
 #define UID_FINDModalityWorklistInformationModel                   "1.2.840.10008.5.1.4.31"
 
 // General Purpose Worklist
@@ -539,8 +543,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_ModalityPerformedProcedureStepRetrieveSOPClass         "1.2.840.10008.3.1.2.3.4"
 #define UID_ModalityPerformedProcedureStepNotificationSOPClass     "1.2.840.10008.3.1.2.3.5"
 
-// Radiotherapy Treatment Delivery
-#define UID_RTBeamsDeliveryInstructionStorage                      "1.2.840.10008.5.1.4.34.7"
+// Radiotherapy
 #define UID_RTConventionalMachineVerification                      "1.2.840.10008.5.1.4.34.8"
 #define UID_RTIonMachineVerification                               "1.2.840.10008.5.1.4.34.9"
 
index 11c9e73f4e9954ff2fb3707929040bac7cff8729..922c78a53975d071a3cdc21ad4da8f9d6090b6bd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/ofstd/ofglobal.h"
 #include "dcmtk/dcmdata/dcdefine.h"
 
+// include this file in doxygen documentation
+
+/** @file dcvr.h
+ *  @brief definition and handling of value representations (VR)
+ */
+
 /** Global flag to enable/disable the generation of VR=UN, which has been
  *  introduced after the first edition of the DICOM standard (1993).
  *  If disabled, the VR=OB is used instead.
@@ -42,13 +48,19 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableUnlimitedTextVRGeneration;
  *  introduced after the first edition of the DICOM standard (1993).
  *  If disabled, the VR=UN (if enabled) or alternatively VR=OB is used.
  */
-extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherFloatStringVRGeneration; /* default OFTrue */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherFloatVRGeneration; /* default OFTrue */
 
 /** Global flag to enable/disable the generation of VR=OD, which has been
  *  introduced after the first edition of the DICOM standard (1993).
  *  If disabled, the VR=UN (if enabled) or alternatively VR=OB is used.
  */
-extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherDoubleStringVRGeneration; /* default OFTrue */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherDoubleVRGeneration; /* default OFTrue */
+
+/** Global flag to enable/disable the generation of VR=OL, which has been
+ *  introduced after the first edition of the DICOM standard (1993).
+ *  If disabled, the VR=UN (if enabled) or alternatively VR=OB is used.
+ */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherLongVRGeneration; /* default OFTrue */
 
 /** Global flag to enable/disable the generation of VR=UR, which has been
  *  introduced after the first edition of the DICOM standard (1993).
@@ -126,16 +138,19 @@ enum DcmEVR
     /// long text
     EVR_LT,
 
-    /// other byte string
+    /// other byte
     EVR_OB,
 
-    /// other double string
+    /// other double
     EVR_OD,
 
-    /// other float string
+    /// other float
     EVR_OF,
 
-    /// other word string
+    /// other long
+    EVR_OL,
+
+    /// other word
     EVR_OW,
 
     /// person name
index e7877c9134633c35206590bfda161fcd91b66576..47eeebb1c4c4e5d3c7cc0aed69d08634081a102f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -114,6 +114,8 @@ class DCMTK_DCMDATA_EXPORT DcmLongString
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index 108c634c2e16e988adc9ddde26a9270e4cdbc2bb..50f324c7e934aabd764933aea512067812d54c6b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -123,6 +123,8 @@ class DCMTK_DCMDATA_EXPORT DcmLongText
      *  @param value string value to be checked
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index 379dec52366ccea9a08b4460deed039ca8e95ba5..8a1c0fada8cf1fe926da18ccb695f5055f6cfa0d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,8 +27,8 @@
 #include "dcmtk/dcmdata/dcelem.h"
 
 
-/** a class representing the DICOM value representations 'Other Byte String' (OB)
- *  and 'Other Word String' (OW)
+/** a class representing the DICOM value representations 'Other Byte' (OB)
+ *  and 'Other Word' (OW)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherByteOtherWord
   : public DcmElement
index a135e318c5e61517c618b40c4aa99c7a43bdf330..eaa363eda2634766757316f00baf2413a3d418d2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013, OFFIS e.V.
+ *  Copyright (C) 2013-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,7 +28,7 @@
 #include "dcmtk/dcmdata/dcvrfd.h"
 
 
-/** a class representing the DICOM value representation 'Other Double String' (OD)
+/** a class representing the DICOM value representation 'Other Double' (OD)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherDouble
   : public DcmFloatingPointDouble
index e60df44188523b20b152a1f726bb724cd5c3e2e2..bd228fc526a7ffe7f8e5944e84362f9d89953b0d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2013, OFFIS e.V.
+ *  Copyright (C) 2002-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,7 +28,7 @@
 #include "dcmtk/dcmdata/dcvrfl.h"
 
 
-/** a class representing the DICOM value representation 'Other Float String' (OF)
+/** a class representing the DICOM value representation 'Other Float' (OF)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherFloat
   : public DcmFloatingPointSingle
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrol.h b/dcmdata/include/dcmtk/dcmdata/dcvrol.h
new file mode 100644 (file)
index 0000000..747bfeb
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Joerg Riesmeier
+ *
+ *  Purpose: Interface of class DcmOtherLong
+ *
+ */
+
+
+#ifndef DCVROL_H
+#define DCVROL_H
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmdata/dcvrul.h"
+
+
+/** a class representing the DICOM value representation 'Other Long' (OL)
+ */
+class DCMTK_DCMDATA_EXPORT DcmOtherLong
+  : public DcmUnsignedLong
+{
+
+ public:
+
+    /** constructor.
+     *  Create new element from given tag and length.
+     *  @param tag DICOM tag for the new element
+     *  @param len value length for the new element
+     */
+    DcmOtherLong(const DcmTag &tag,
+                 const Uint32 len = 0);
+
+    /** copy constructor
+     *  @param old element to be copied
+     */
+    DcmOtherLong(const DcmOtherLong &old);
+
+    /** destructor
+     */
+    virtual ~DcmOtherLong();
+
+    /** assignment operator
+     *  @param obj element to be assigned/copied
+     *  @return reference to this object
+     */
+    DcmOtherLong &operator=(const DcmOtherLong &obj);
+
+    /** clone method
+     *  @return deep copy of this object
+     */
+    virtual DcmOtherLong *clone() const
+    {
+      return new DcmOtherLong(*this);
+    }
+
+    /** virtual object copying. This method can be used for DcmObject
+     *  and derived classes to get a deep copy of an object. Internally,
+     *  the assignment operator is called if the given DcmObject parameter
+     *  is of the same type as "this" object instance. If not, an error
+     *  is returned. This function permits copying an object by value
+     *  in a virtual way which therefore is different to just calling the
+     *  assignment operator of DcmElement which could result in slicing
+     *  the object.
+     *  @param rhs - [in] The instance to copy from. Has to be of the same
+     *                    class type as "this" object
+     *  @return EC_Normal if copying was successful, error otherwise
+     */
+    virtual OFCondition copyFrom(const DcmObject& rhs);
+
+    /** get element type identifier
+     *  @return type identifier of this class (EVR_OL)
+     */
+    virtual DcmEVR ident() const;
+
+    /** check whether stored value conforms to the VR and to the specified VM
+     *  @param vm parameter not used for this VR
+     *  @param oldFormat parameter not used for this VR (only for DA, TM)
+     *  @return always returns EC_Normal, i.e. currently no checks are performed
+     */
+    virtual OFCondition checkValue(const OFString &vm = "",
+                                   const OFBool oldFormat = OFFalse);
+
+    /** get value multiplicity
+     *  @return always returns 1 (according to the DICOM standard)
+     */
+    virtual unsigned long getVM();
+
+    /** write object in XML format to a stream
+     *  @param out output stream to which the XML document is written
+     *  @param flags optional flag used to customize the output (see DCMTypes::XF_xxx)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeXML(STD_NAMESPACE ostream&out,
+                                 const size_t flags = 0);
+};
+
+
+#endif // DCVROL_H
index ad42d2c0f3453bc7b3dcef915b8e5f834b7e28a5..d485489cabd5265214c703da3fa9b0e88f63f259 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -282,6 +282,8 @@ class DCMTK_DCMDATA_EXPORT DcmPersonName
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index a5956fddc03edabbfbbebc0b5b0815205ea51b2b..98bbb3138d87b382faa513c22d9d14b63395f0a0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2013, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -114,6 +114,8 @@ class DCMTK_DCMDATA_EXPORT DcmShortString
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index 0595756e2a7e4f902f2a8e835a59ef635c1bfa8b..45362494e76ebbf644ef6cc36864d3d56ba89183 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -124,6 +124,8 @@ class DCMTK_DCMDATA_EXPORT DcmShortText
      *  @param value string value to be checked
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index 97f18277efde3c9daff847f17a40199388829d47..60bbde736ca88c8cee1d59a9dddc61c563dcb66f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, OFFIS e.V.
+ *  Copyright (C) 2015-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -113,6 +113,8 @@ class DCMTK_DCMDATA_EXPORT DcmUnlimitedCharacters
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index 39eae5e8e26873e7cc981e0fc1d5d54d54764677..be292d0a324f7dee3de943fbd7cddb89f33b23f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -63,7 +63,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLong
      *  with a given object of the same type. The tag of the element is also
      *  considered as the first component that is compared, followed by the
      *  object types (VR, i.e. DCMTK'S EVR) and the comparison of all value
-     *  components of the object, preferrably in the order declared in the
+     *  components of the object, preferably in the order declared in the
      *  object (if applicable).
      *  @param  rhs the right hand side of the comparison
      *  @return 0 if the object values are equal.
index c2c2de2ee1a742fa18f783c3f9132eeced5e9ea2..8d0f3d5b56a5e2b4b4e9c4f71f473eab03532d12 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -53,10 +53,10 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
      */
     virtual ~DcmUnsignedLongOffset();
 
-    /** assignment operator. 
-     *  @param the offset to be copied
+    /** assignment operator.
+     *  @param obj the offset to be copied
      */
-    DcmUnsignedLongOffset &operator=(const DcmUnsignedLongOffset &);
+    DcmUnsignedLongOffset &operator=(const DcmUnsignedLongOffset &obj);
 
     /** clone method
      *  @return deep copy of this object
@@ -65,7 +65,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
     {
       return new DcmUnsignedLongOffset(*this);
     }
-    
+
     /** Virtual object copying. This method can be used for DcmObject
      *  and derived classes to get a deep copy of an object. Internally
      *  the assignment operator is called if the given DcmObject parameter
@@ -78,7 +78,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
      *                class type as "this" object
      *  @return EC_Normal if copying was successful, error otherwise
      */
-    virtual OFCondition copyFrom(const DcmObject& rhs);    
+    virtual OFCondition copyFrom(const DcmObject& rhs);
 
     /** get element type identifier
      *  @return type identifier of this class (internal type: EVR_up)
index 5ed25d46d712b733db1021433951d58ea35da3eb..56f370fc9ad4b3fe9d30e1957a4d52fd8b14d95c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -124,6 +124,8 @@ class DCMTK_DCMDATA_EXPORT DcmUnlimitedText
      *  @param value string value to be checked
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
index 8e99e84bef0e88bc67efab5622abbd220824fd71..c1ea9070e502bf4ca47763ec5b95cc43519a6bca 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/dcmdata/dctypes.h"
 #include "dcmtk/dcmdata/dcvr.h"
 
+// include this file in doxygen documentation
+
+/** @file dcxfer.h
+ *  @brief definition and handling of transfer syntaxes
+ */
+
 /** enumeration of all DICOM transfer syntaxes known to the toolkit
  */
 typedef enum {
index 950b0c969a4f545a29cc658ebf7f88bd7f214b42..7bf6384468e2be03c8b61defd61739da1e03ee8c 100644 (file)
@@ -14,6 +14,8 @@ i2d.o: i2d.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -98,6 +100,8 @@ i2dbmps.o: i2dbmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/libi2d/i2define.h \
@@ -122,6 +126,8 @@ i2djpgs.o: i2djpgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/libi2d/i2dimgs.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -175,6 +181,8 @@ i2dplnsc.o: i2dplnsc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -227,6 +235,8 @@ i2dplsc.o: i2dplsc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -279,6 +289,8 @@ i2dplvlp.o: i2dplvlp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
index 02d16bc7e9746388656a4e088e6b0c9962ce338d..fec02e5495e46110c54a4c85d2e3b12d9214155c 100644 (file)
@@ -7,9 +7,9 @@ DCMTK_ADD_LIBRARY(dcmdata
   dcostrmf dcostrmz dcpath dcpcache dcpixel dcpixseq dcpxitem dcrleccd dcrlecce
   dcrlecp dcrledrg dcrleerg dcrlerp dcsequen dcspchrs dcstack dcswap dctag
   dctagkey dctypes dcuid dcvr dcvrae dcvras dcvrat dcvrcs dcvrda dcvrds dcvrdt
-  dcvrfd dcvrfl dcvris dcvrlo dcvrlt dcvrobow dcvrod dcvrof dcvrpn dcvrpobw dcvrsh
-  dcvrsl dcvrss dcvrst dcvrtm dcvruc dcvrui dcvrul dcvrulup dcvrur dcvrus dcvrut
-  dcwcache dcxfer vrscan vrscanl)
+  dcvrfd dcvrfl dcvris dcvrlo dcvrlt dcvrobow dcvrod dcvrof dcvrol dcvrpn dcvrpobw
+  dcvrsh dcvrsl dcvrss dcvrst dcvrtm dcvruc dcvrui dcvrul dcvrulup dcvrur dcvrus
+  dcvrut dcwcache dcxfer vrscan vrscanl)
 
 DCMTK_TARGET_LINK_MODULES(dcmdata ofstd oflog)
 DCMTK_TARGET_LINK_LIBRARIES(dcmdata ${ZLIB_LIBS})
index 6d182f237ac1458761197b41c6e41fed9fa8e1f9..b328a01c05882445ab15a9b19c555e13785e3e28 100644 (file)
@@ -38,7 +38,9 @@ cmdlnarg.o: cmdlnarg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dcbytstr.o: dcbytstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -51,6 +53,8 @@ dcbytstr.o: dcbytstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -104,6 +108,8 @@ dcchrstr.o: dcchrstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -180,6 +186,8 @@ dccodec.o: dccodec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -206,6 +214,8 @@ dcdatset.o: dcdatset.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -288,7 +298,10 @@ dcdatutl.o: dcdatutl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h ../include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
  ../include/dcmtk/dcmdata/dcobject.h ../include/dcmtk/dcmdata/dcerror.h \
@@ -315,6 +328,8 @@ dcddirif.o: dcddirif.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -380,6 +395,8 @@ dcdicdir.o: dcdicdir.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -447,6 +464,8 @@ dcdict.o: dcdict.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdict.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/dcmdata/dchashdi.h ../include/dcmtk/dcmdata/dcdefine.h \
@@ -507,6 +526,8 @@ dcdirrec.o: dcdirrec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -572,7 +593,8 @@ dcdirrec.o: dcdirrec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcspchrs.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -586,6 +608,8 @@ dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -650,6 +674,8 @@ dcfilefo.o: dcfilefo.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -709,6 +735,8 @@ dcfilter.o: dcfilter.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -787,7 +815,9 @@ dchashdi.o: dchashdi.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dcistrma.o: dcistrma.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -802,6 +832,8 @@ dcistrma.o: dcistrma.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -846,6 +878,8 @@ dcistrmb.o: dcistrmb.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -890,6 +924,8 @@ dcistrmf.o: dcistrmf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -934,6 +970,8 @@ dcistrmz.o: dcistrmz.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -978,6 +1016,8 @@ dcitem.o: dcitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1027,13 +1067,14 @@ dcitem.o: dcitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvris.h ../include/dcmtk/dcmdata/dcvrlo.h \
  ../include/dcmtk/dcmdata/dcchrstr.h ../include/dcmtk/dcmdata/dcvrlt.h \
  ../include/dcmtk/dcmdata/dcvrod.h ../include/dcmtk/dcmdata/dcvrof.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/dcvrul.h \
  ../include/dcmtk/dcmdata/dcvrpn.h ../include/dcmtk/dcmdata/dcvrsh.h \
  ../include/dcmtk/dcmdata/dcvrsl.h ../include/dcmtk/dcmdata/dcvrss.h \
  ../include/dcmtk/dcmdata/dcvrst.h ../include/dcmtk/dcmdata/dcvrtm.h \
  ../include/dcmtk/dcmdata/dcvruc.h ../include/dcmtk/dcmdata/dcvrui.h \
- ../include/dcmtk/dcmdata/dcvrul.h ../include/dcmtk/dcmdata/dcvrulup.h \
- ../include/dcmtk/dcmdata/dcvrur.h ../include/dcmtk/dcmdata/dcvrus.h \
- ../include/dcmtk/dcmdata/dcvrut.h ../include/dcmtk/dcmdata/dcspchrs.h \
+ ../include/dcmtk/dcmdata/dcvrulup.h ../include/dcmtk/dcmdata/dcvrur.h \
+ ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrut.h \
+ ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
@@ -1083,6 +1124,8 @@ dclist.o: dclist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcmetinf.o: dcmetinf.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1097,6 +1140,8 @@ dcmetinf.o: dcmetinf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcmetinf.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -1147,6 +1192,8 @@ dcobject.o: dcobject.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -1223,6 +1270,8 @@ dcostrma.o: dcostrma.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcostrmz.h ../include/dcmtk/dcmdata/dcerror.h
@@ -1267,6 +1316,8 @@ dcostrmb.o: dcostrmb.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h
@@ -1311,6 +1362,8 @@ dcostrmf.o: dcostrmf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h
@@ -1355,6 +1408,8 @@ dcostrmz.o: dcostrmz.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h
@@ -1373,6 +1428,8 @@ dcpath.o: dcpath.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1452,6 +1509,8 @@ dcpcache.o: dcpcache.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dcstack.h
 dcpixel.o: dcpixel.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1500,6 +1559,8 @@ dcpixel.o: dcpixel.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
  ../include/dcmtk/dcmdata/dccodec.h ../include/dcmtk/dcmdata/dcpixseq.h \
@@ -1521,6 +1582,8 @@ dcpixseq.o: dcpixseq.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -1602,6 +1665,8 @@ dcpxitem.o: dcpxitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
  ../include/dcmtk/dcmdata/dcofsetl.h ../include/dcmtk/dcmdata/dcswap.h \
@@ -1648,6 +1713,8 @@ dcrleccd.o: dcrleccd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1703,6 +1770,8 @@ dcrlecce.o: dcrlecce.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1756,6 +1825,8 @@ dcrlecp.o: dcrlecp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -1801,6 +1872,8 @@ dcrledrg.o: dcrledrg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcrleccd.h ../include/dcmtk/dcmdata/dcrlecp.h
@@ -1846,6 +1919,8 @@ dcrleerg.o: dcrleerg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcrlecce.h ../include/dcmtk/dcmdata/dcrlecp.h
@@ -1895,6 +1970,8 @@ dcrlerp.o: dcrlerp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcsequen.o: dcsequen.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1909,6 +1986,8 @@ dcsequen.o: dcsequen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcsequen.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
@@ -1969,6 +2048,8 @@ dcspchrs.o: dcspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2055,6 +2136,8 @@ dcswap.o: dcswap.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
 dctag.o: dctag.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2125,6 +2208,8 @@ dctypes.o: dctypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h
 dcuid.o: dcuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -2167,6 +2252,8 @@ dcuid.o: dcuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofcrc32.h \
  ../../ofstd/include/dcmtk/ofstd/ofnetdb.h
 dcvr.o: dcvr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2210,7 +2297,9 @@ dcvr.o: dcvr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dcvrae.o: dcvrae.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrae.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -2252,6 +2341,8 @@ dcvrae.o: dcvrae.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2299,6 +2390,8 @@ dcvras.o: dcvras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2350,6 +2443,8 @@ dcvrat.o: dcvrat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrcs.o: dcvrcs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2393,6 +2488,8 @@ dcvrcs.o: dcvrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2440,6 +2537,8 @@ dcvrda.o: dcvrda.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2488,6 +2587,8 @@ dcvrds.o: dcvrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2535,6 +2636,8 @@ dcvrdt.o: dcvrdt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2557,6 +2660,8 @@ dcvrfd.o: dcvrfd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvrfd.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2603,6 +2708,8 @@ dcvrfl.o: dcvrfl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2678,6 +2785,8 @@ dcvris.o: dcvris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2725,6 +2834,8 @@ dcvrlo.o: dcvrlo.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2772,6 +2883,8 @@ dcvrlt.o: dcvrlt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2790,6 +2903,8 @@ dcvrobow.o: dcvrobow.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../include/dcmtk/dcmdata/dcvrobow.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -2872,9 +2987,11 @@ dcvrod.o: dcvrod.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcuid.h
+ ../include/dcmtk/dcmdata/dcswap.h
 dcvrof.o: dcvrof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -2921,9 +3038,62 @@ dcvrof.o: dcvrof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
- ../include/dcmtk/dcmdata/dcswap.h ../include/dcmtk/dcmdata/dcuid.h
+ ../include/dcmtk/dcmdata/dcswap.h
+dcvrol.o: dcvrol.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/dcvrul.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dcswap.h
 dcvrpn.o: dcvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrpn.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -2965,6 +3135,8 @@ dcvrpn.o: dcvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3016,6 +3188,8 @@ dcvrpobw.o: dcvrpobw.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrsh.o: dcvrsh.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3059,6 +3233,8 @@ dcvrsh.o: dcvrsh.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3110,6 +3286,8 @@ dcvrsl.o: dcvrsl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrss.o: dcvrss.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3157,6 +3335,8 @@ dcvrss.o: dcvrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrst.o: dcvrst.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3200,6 +3380,8 @@ dcvrst.o: dcvrst.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3246,6 +3428,8 @@ dcvrtm.o: dcvrtm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3293,6 +3477,8 @@ dcvruc.o: dcvruc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -3312,6 +3498,8 @@ dcvrui.o: dcvrui.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvrui.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -3393,6 +3581,8 @@ dcvrul.o: dcvrul.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrulup.o: dcvrulup.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3440,6 +3630,8 @@ dcvrulup.o: dcvrulup.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrur.o: dcvrur.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3482,6 +3674,8 @@ dcvrur.o: dcvrur.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3533,6 +3727,8 @@ dcvrus.o: dcvrus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h
 dcvrut.o: dcvrut.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3575,6 +3771,8 @@ dcvrut.o: dcvrut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -3597,6 +3795,8 @@ dcwcache.o: dcwcache.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcistrma.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -3671,6 +3871,8 @@ dcxfer.o: dcxfer.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcuid.h
@@ -3693,6 +3895,8 @@ mkdeftag.o: mkdeftag.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdicent.h ../include/dcmtk/dcmdata/dctagkey.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -3715,6 +3919,8 @@ mkdictbi.o: mkdictbi.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdicent.h ../include/dcmtk/dcmdata/dctagkey.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -3733,6 +3939,8 @@ vrscan.o: vrscan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
index ab80da9026c4c9219c447ab6f1041fe9376db1b9..f84425757e8317edf3bb32883ee289ec5cc99487 100644 (file)
@@ -42,7 +42,7 @@ objs = dcpixseq.o dcpxitem.o dcuid.o dcerror.o \
        dccodec.o dcvrda.o dcvrds.o dcvrdt.o dcvris.o dcvrtm.o dcvrui.o \
        dcchrstr.o dcvrlo.o dcvrlt.o dcvrpn.o dcvrsh.o dcvrst.o dcvrobow.o \
        dcvrat.o dcvrss.o dcvrus.o dcvrsl.o dcvrul.o dcvrulup.o dcvrfl.o \
-       dcvrfd.o dcvrpobw.o dcvrof.o dcvrod.o dcdirrec.o dcdicdir.o \
+       dcvrfd.o dcvrpobw.o dcvrof.o dcvrod.o dcvrol.o dcdirrec.o dcdicdir.o \
        dcrleccd.o dcrlecce.o dcrlecp.o dcrlerp.o dcrledrg.o dcrleerg.o \
        dcdictbi.o dctagkey.o dcdicent.o dcdict.o dcvr.o dchashdi.o cmdlnarg.o \
        dcvrut.o dcvrur.o dcvruc.o dctypes.o dcpcache.o dcddirif.o dcistrma.o \
index 99d227e4c8193afb65ff9758948fe8a920721dbe..3fcf6c3428cde8011189cb1f23969ecab3d3d7d3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -291,6 +291,7 @@ void DcmDataset::print(STD_NAMESPACE ostream&out,
 OFCondition DcmDataset::writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     /* the Native DICOM Model as defined for Application Hosting needs special handling */
     if (flags & DCMTypes::XF_useNativeModel)
     {
@@ -318,18 +319,20 @@ OFCondition DcmDataset::writeXML(STD_NAMESPACE ostream &out,
         elementList->seek(ELP_first);
         do {
             dO = elementList->get();
-            dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
-        } while (elementList->seek(ELP_next));
+            l_error = dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
+        } while (l_error.good() && elementList->seek(ELP_next));
     }
-    /* write XML end tag (depending on output format) */
-    if (flags & DCMTypes::XF_useNativeModel)
+    if (l_error.good())
     {
-        out << "</NativeDicomModel>" << OFendl;
-    } else {
-        out << "</data-set>" << OFendl;
+        /* write XML end tag (depending on output format) */
+        if (flags & DCMTypes::XF_useNativeModel)
+        {
+            out << "</NativeDicomModel>" << OFendl;
+        } else {
+            out << "</data-set>" << OFendl;
+        }
     }
-    /* always report success */
-    return EC_Normal;
+    return l_error;
 }
 
 
@@ -366,13 +369,13 @@ OFCondition DcmDataset::read(DcmInputStream &inStream,
                     case EXS_LittleEndianExplicit:
                     case EXS_BigEndianExplicit:
                     case EXS_BigEndianImplicit:
-                        DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of uncompressed dataset");
+                        DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of uncompressed data set");
                         OriginalXfer = checkTransferSyntax(inStream);
                         if ((xfer != EXS_Unknown) && (OriginalXfer != xfer))
-                            DCMDATA_WARN("DcmDataset: Wrong transfer syntax specified, detecting from dataset");
+                            DCMDATA_WARN("DcmDataset: Wrong transfer syntax specified, detecting from data set");
                         break;
                     default:
-                        DCMDATA_DEBUG("DcmDataset::read() dataset seems to be compressed, so transfer syntax is not detected");
+                        DCMDATA_DEBUG("DcmDataset::read() data set seems to be compressed, so transfer syntax is not detected");
                         OriginalXfer = xfer;
                         break;
                 }
@@ -384,7 +387,7 @@ OFCondition DcmDataset::read(DcmInputStream &inStream,
                 /* If the transfer syntax is given, we want to use it. */
                 if (xfer == EXS_Unknown)
                 {
-                    DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of dataset (because it is unknown)");
+                    DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of data set (because it is unknown)");
                     OriginalXfer = checkTransferSyntax(inStream);
                 } else
                     OriginalXfer = xfer;
index 01214ed14db987b952ea2bf8abb6507ddb5a0440..eaabb3716ce7b88c13fccfda837a3cbaf86ca1d9 100644 (file)
@@ -1,9 +1,9 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2011-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  This software and supporting documentation are maintained by
+ *  This software and supporting documentation were developed by
  *
  *    OFFIS e.V.
  *    R&D Division Health
@@ -11,9 +11,9 @@
  *    D-26121 Oldenburg, Germany
  *
  *
- *  Module:  dcmiod
+ *  Module:  dcmdata
  *
- *  Author:  Michael Onken
+ *  Author:  Joerg Riesmeier, Michael Onken
  *
  *  Purpose: Static helper functionality for dcmdata module
  *
 #include "dcmtk/dcmdata/dcmetinf.h"
 #include "dcmtk/dcmdata/dcfilefo.h"
 
-// --- static helpers ---
 
+// --- static helpers ---
 
-OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFString &filename,
+OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFFilename &filename,
                                                 OFString &sopClassUID,
                                                 OFString &sopInstanceUID,
                                                 OFString &transferSyntaxUID,
                                                 const E_FileReadMode readMode)
 {
   OFCondition status = EC_IllegalParameter;
-  if (!filename.empty())
+  if (!filename.isEmpty())
   {
     DCMDATA_DEBUG("getting SOP Class UID, SOP Instance UID and Transfer Syntax UID from DICOM file");
     sopClassUID.clear();
@@ -46,7 +46,7 @@ OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFString &filename,
     if (readMode != ERM_dataset)
     {
       DcmMetaInfo metaInfo;
-      status = metaInfo.loadFile(filename.c_str());
+      status = metaInfo.loadFile(filename);
       if (status.good())
       {
         // try to get the UIDs from the meta-header
@@ -64,7 +64,7 @@ OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFString &filename,
       if (status.bad() || sopClassUID.empty() || sopInstanceUID.empty() || transferSyntaxUID.empty())
       {
         DcmFileFormat fileformat;
-        status = fileformat.loadFile(filename.c_str(), EXS_Unknown, EGL_noChange, 256 /* maxReadLength */, readMode);
+        status = fileformat.loadFile(filename, EXS_Unknown, EGL_noChange, 256 /* maxReadLength */, readMode);
         if (status.good())
         {
           DcmDataset *dataset = fileformat.getDataset();
index b038410b068c1f3d772709aa644c9b632079977f..e58b0644e80918d92d3d576d1dc33542f793e3b5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2015, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -622,6 +622,9 @@ OFString DicomDirInterface::recordTypeToName(const E_DirRecType recordType)
         case ERT_SurfaceScan:
             recordName = "SurfaceScan";
             break;
+        case ERT_Tract:
+            recordName = "Tract";
+            break;
         default:
             recordName = "(unknown-directory-record-type)";
             break;
@@ -660,7 +663,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
              compare(sopClass, UID_RadiopharmaceuticalRadiationDoseSRStorage) ||
              compare(sopClass, UID_SpectaclePrescriptionReportStorage) ||
              compare(sopClass, UID_MacularGridThicknessAndVolumeReportStorage) ||
-             compare(sopClass, UID_ImplantationPlanSRDocumentStorage))
+             compare(sopClass, UID_ImplantationPlanSRDocumentStorage) ||
+             compare(sopClass, UID_AcquisitionContextSRStorage))
     {
         result = ERT_SRDocument;
     }
@@ -750,13 +754,18 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
         result = ERT_ImplantGroup;
     else if (compare(sopClass, UID_ImplantAssemblyTemplateStorage))
         result = ERT_ImplantAssy;
-    else if (compare(sopClass, UID_RTBeamsDeliveryInstructionStorage))
+    else if (compare(sopClass, UID_RTBeamsDeliveryInstructionStorage) ||
+             compare(sopClass, UID_RTBrachyApplicationSetupDeliveryInstructionStorage))
+    {
         result = ERT_Plan;
+    }
     else if (compare(sopClass, UID_SurfaceScanMeshStorage) ||
              compare(sopClass, UID_SurfaceScanPointCloudStorage))
     {
         result = ERT_SurfaceScan;
     }
+    else if (compare(sopClass, UID_TractographyResultsStorage))
+        result = ERT_Tract;
     return result;
 }
 
@@ -943,6 +952,7 @@ static OFCondition insertSortedUnder(DcmDirectoryRecord *parent,
             case ERT_Surface:
             case ERT_Measurement:
             case ERT_SurfaceScan:
+            case ERT_Tract:
                 /* try to insert based on InstanceNumber */
                 result = insertWithISCriterion(parent, child, DCM_InstanceNumber);
                 break;
@@ -1494,6 +1504,9 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                 case AP_GeneralPurposeBDMPEG2MPatHL:
                 case AP_GeneralPurposeBDMPEG4HPatLV41:
                 case AP_GeneralPurposeBDMPEG4HPatLV41BD:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+                case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
                 case AP_USBandFlashJPEG:
                 case AP_USBandFlashJPEG2000:
                 case AP_GeneralPurposeMIME:
@@ -1508,6 +1521,12 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                         expectedTransferSyntax = UID_MPEG4HighProfileLevel4_1TransferSyntax;
                     else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD)
                         expectedTransferSyntax = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
+                    else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D)
+                        expectedTransferSyntax = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+                    else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D)
+                        expectedTransferSyntax = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+                    else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42)
+                        expectedTransferSyntax = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
                     /* is it an image ? */
                     for (int i = 0; i < numberOfDcmImageSOPClassUIDs && !found; i++)
                         found = compare(mediaSOPClassUID, dcmImageSOPClassUIDs[i]);
@@ -1516,10 +1535,12 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                     {
                         found = compare(mediaSOPClassUID, UID_RTDoseStorage) ||
                                 compare(mediaSOPClassUID, UID_RTStructureSetStorage) ||
-                                compare(mediaSOPClassUID, UID_RTBeamsTreatmentRecordStorage) ||
                                 compare(mediaSOPClassUID, UID_RTPlanStorage) ||
-                                compare(mediaSOPClassUID, UID_RTBrachyTreatmentRecordStorage) ||
                                 compare(mediaSOPClassUID, UID_RTTreatmentSummaryRecordStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBeamsTreatmentRecordStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBeamsDeliveryInstructionStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBrachyTreatmentRecordStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBrachyApplicationSetupDeliveryInstructionStorage) ||
                                 compare(mediaSOPClassUID, UID_RTIonPlanStorage) ||
                                 compare(mediaSOPClassUID, UID_RTIonBeamsTreatmentRecordStorage);
                     }
@@ -1539,7 +1560,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) ||
                                 compare(mediaSOPClassUID, UID_SpectaclePrescriptionReportStorage) ||
                                 compare(mediaSOPClassUID, UID_MacularGridThicknessAndVolumeReportStorage) ||
-                                compare(mediaSOPClassUID, UID_ImplantationPlanSRDocumentStorage);
+                                compare(mediaSOPClassUID, UID_ImplantationPlanSRDocumentStorage) ||
+                                compare(mediaSOPClassUID, UID_AcquisitionContextSRStorage);
                      }
                     /* is it one of the waveform SOP Classes? */
                     if (!found)
@@ -1619,7 +1641,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_RealWorldValueMappingStorage) ||
                                 compare(mediaSOPClassUID, UID_HangingProtocolStorage) ||
                                 compare(mediaSOPClassUID, UID_StereometricRelationshipStorage) ||
-                                compare(mediaSOPClassUID, UID_ColorPaletteStorage);
+                                compare(mediaSOPClassUID, UID_ColorPaletteStorage) ||
+                                compare(mediaSOPClassUID, UID_TractographyResultsStorage);
                     }
                     /* the following SOP classes have been retired with previous editions of the DICOM standard */
                     if (!found && RetiredSOPClassSupport)
@@ -1805,6 +1828,45 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 OFSTRINGSTREAM_FREESTR(tmpString)
                             }
                             break;
+                        case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+                        case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+                        case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
+                            /* compare with expected transfer syntax */
+                            found = compare(transferSyntax, expectedTransferSyntax);
+                            if (found)
+                            {
+                                /* check for multi-frame composite IOD */
+                                if (!isMultiframeStorageSOPClass(mediaSOPClassUID))
+                                {
+                                    /* create error message */
+                                    OFOStringStream oss;
+                                    oss << xferName << " only for multi-frame composite IODs: " << filename
+                                        << OFStringStream_ends;
+                                    OFSTRINGSTREAM_GETSTR(oss, tmpString)
+                                    if (TransferSyntaxCheck)
+                                    {
+                                        DCMDATA_ERROR(tmpString);
+                                        result = EC_ApplicationProfileViolated;
+                                    } else
+                                        DCMDATA_WARN(tmpString);
+                                    OFSTRINGSTREAM_FREESTR(tmpString)
+                                }
+                            } else {
+                                const OFString expXferName = dcmFindNameOfUID(expectedTransferSyntax.c_str(), "");
+                                /* create error message */
+                                OFOStringStream oss;
+                                oss << expXferName << " expected but " << xferName << " found: " << filename
+                                    << OFStringStream_ends;
+                                OFSTRINGSTREAM_GETSTR(oss, tmpString)
+                                if (TransferSyntaxCheck)
+                                {
+                                    DCMDATA_ERROR(tmpString);
+                                    result = EC_ApplicationProfileViolated;
+                                } else
+                                    DCMDATA_WARN(tmpString);
+                                OFSTRINGSTREAM_FREESTR(tmpString)
+                            }
+                            break;
                         case AP_XrayAngiographicDVD:
                             if (compare(mediaSOPClassUID, UID_XRayAngiographicImageStorage))
                             {
@@ -2595,6 +2657,7 @@ OFCondition DicomDirInterface::checkMandatoryAttributes(DcmMetaInfo *metainfo,
                 case ERT_ValueMap:
                 case ERT_Surface:
                 case ERT_Measurement:
+                case ERT_Tract:
                     if (!checkExistsWithValue(dataset, DCM_InstanceNumber, filename))
                         result = EC_InvalidTag;
                     if (!checkExistsWithValue(dataset, DCM_ContentDate, filename))
@@ -2629,6 +2692,9 @@ OFCondition DicomDirInterface::checkMandatoryAttributes(DcmMetaInfo *metainfo,
                             (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                             (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                             (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                            (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                            (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                            (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                             (ApplicationProfile == AP_USBandFlashJPEG) ||
                             (ApplicationProfile == AP_USBandFlashJPEG2000) ||
                             (ApplicationProfile == AP_MPEG2MPatMLDVD))
@@ -2744,7 +2810,7 @@ OFCondition DicomDirInterface::loadAndCheckDicomFile(const OFFilename &filename,
             /* check for empty dataset */
             if ((dataset == NULL) || (dataset->card() == 0))
             {
-                DCMDATA_ERROR("file contains no data (no dataset): " << filename);
+                DCMDATA_ERROR("file contains no data (no data set): " << filename);
                 result = EC_CorruptedData;
             }
             /* only proceed if previous checks have been passed */
@@ -2858,6 +2924,7 @@ OFBool DicomDirInterface::recordMatchesDataset(DcmDirectoryRecord *record,
             case ERT_ImplantAssy:
             case ERT_Plan:
             case ERT_SurfaceScan:
+            case ERT_Tract:
                 /* The attribute ReferencedSOPInstanceUID is automatically
                  * put into a Directory Record when a filename is present.
                 */
@@ -2918,6 +2985,9 @@ DcmDirectoryRecord *DicomDirInterface::buildPatientRecord(DcmDirectoryRecord *re
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                 (ApplicationProfile == AP_USBandFlashJPEG) ||
                 (ApplicationProfile == AP_USBandFlashJPEG2000) ||
                 (ApplicationProfile == AP_MPEG2MPatMLDVD))
@@ -3008,6 +3078,9 @@ DcmDirectoryRecord *DicomDirInterface::buildSeriesRecord(DcmDirectoryRecord *rec
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                 (ApplicationProfile == AP_USBandFlashJPEG) ||
                 (ApplicationProfile == AP_USBandFlashJPEG2000) ||
                 (ApplicationProfile == AP_MPEG2MPatMLDVD))
@@ -3595,6 +3668,9 @@ DcmDirectoryRecord *DicomDirInterface::buildSpectroscopyRecord(DcmDirectoryRecor
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                 (ApplicationProfile == AP_USBandFlashJPEG) ||
                 (ApplicationProfile == AP_USBandFlashJPEG2000))
             {
@@ -4006,6 +4082,40 @@ DcmDirectoryRecord *DicomDirInterface::buildSurfaceScanRecord(DcmDirectoryRecord
 }
 
 
+// create or update tract record and copy required values from dataset
+DcmDirectoryRecord *DicomDirInterface::buildTractRecord(DcmDirectoryRecord *record,
+                                                        DcmFileFormat *fileformat,
+                                                        const OFString &referencedFileID,
+                                                        const OFFilename &sourceFilename)
+{
+    /* create new surface record */
+    if (record == NULL)
+        record = new DcmDirectoryRecord(ERT_Tract, referencedFileID.c_str(), sourceFilename, fileformat);
+    if (record != NULL)
+    {
+        /* check whether new record is ok */
+        if (record->error().good())
+        {
+            DcmDataset *dataset = fileformat->getDataset();
+            /* copy attribute values from dataset to surface record */
+            copyElementType1(dataset, DCM_ContentDate, record, sourceFilename);
+            copyElementType1(dataset, DCM_ContentTime, record, sourceFilename);
+            copyElementType1(dataset, DCM_InstanceNumber, record, sourceFilename);
+            copyElementType1(dataset, DCM_ContentLabel, record, sourceFilename);
+            copyElementType2(dataset, DCM_ContentDescription, record, sourceFilename);
+            copyElementType2(dataset, DCM_ContentCreatorName, record, sourceFilename);
+        } else {
+            printRecordErrorMessage(record->error(), ERT_Tract, "create");
+            /* free memory */
+            delete record;
+            record = NULL;
+        }
+    } else
+        printRecordErrorMessage(EC_MemoryExhausted, ERT_Tract, "create");
+    return record;
+}
+
+
 // create or update image record and copy required values from dataset
 DcmDirectoryRecord *DicomDirInterface::buildImageRecord(DcmDirectoryRecord *record,
                                                         DcmFileFormat *fileformat,
@@ -4042,6 +4152,9 @@ DcmDirectoryRecord *DicomDirInterface::buildImageRecord(DcmDirectoryRecord *reco
                 case AP_GeneralPurposeBDMPEG2MPatHL:
                 case AP_GeneralPurposeBDMPEG4HPatLV41:
                 case AP_GeneralPurposeBDMPEG4HPatLV41BD:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+                case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
                 case AP_USBandFlashJPEG:
                 case AP_USBandFlashJPEG2000:
                     copyElementType1(dataset, DCM_Rows, record, sourceFilename);
@@ -4430,6 +4543,9 @@ DcmDirectoryRecord *DicomDirInterface::addRecord(DcmDirectoryRecord *parent,
                 case ERT_SurfaceScan:
                     record = buildSurfaceScanRecord(record, fileformat, referencedFileID, sourceFilename);
                     break;
+                case ERT_Tract:
+                    record = buildTractRecord(record, fileformat, referencedFileID, sourceFilename);
+                    break;
                 default:
                     /* it can only be an image */
                     record = buildImageRecord(record, fileformat, referencedFileID, sourceFilename);
@@ -4611,6 +4727,7 @@ void DicomDirInterface::inventMissingInstanceLevelAttributes(DcmDirectoryRecord
                 case ERT_Measurement:
                 case ERT_Plan:
                 case ERT_SurfaceScan:
+                case ERT_Tract:
                     /* nothing to do */
                     break;
                 default:
@@ -5066,6 +5183,15 @@ const char *DicomDirInterface::getProfileName(const E_ApplicationProfile profile
         case AP_GeneralPurposeBDMPEG4HPatLV41BD:
             result = "STD-GEN-BD-MPEG4-HPLV41BD";
             break;
+        case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+            result = "STD-GEN-BD-MPEG4-HPLV42-2D";
+            break;
+        case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+            result = "STD-GEN-BD-MPEG4-HPLV42-3D";
+            break;
+        case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
+            result = "STD-GEN-BD-MPEG4-SHPLV42";
+            break;
         case AP_USBandFlashJPEG:
             result = "STD-GEN-USB/MMC/CF/SD-JPEG";
             break;
index e858ec4baf5c1cba4aac62ad3281c47173ef9907..5f98fe2c0f5d7e799c9e0ee0f7565268730ca2e9 100644 (file)
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad
-**   Date: 2015-09-18 11:18:13
+**   Date: 2016-01-25 17:53:36
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdictbi
 **
 **   From: ../data/dicom.dic
@@ -520,6 +520,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_AE, "RetrieveAETitle", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0008, 0x0055, 0x0008, 0x0055,
+      EVR_AE, "StationAETitle", 1, 1, "CP_1516",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0008, 0x0056, 0x0008, 0x0056,
       EVR_CS, "InstanceAvailability", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -900,6 +904,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "ReferencedSOPSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0008, 0x119a, 0x0008, 0x119a,
+      EVR_SQ, "OtherFailuresSequence", 1, 1, "CP_1364",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0008, 0x1200, 0x0008, 0x1200,
       EVR_SQ, "StudiesContainingOtherReferencedInstancesSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -1966,6 +1974,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "IssuerOfPatientIDQualifiersSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0010, 0x0026, 0x0010, 0x0026,
+      EVR_SQ, "SourcePatientGroupIdentificationSequence", 1, 1, "CP_1457",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0027, 0x0010, 0x0027,
+      EVR_SQ, "GroupOfPatientsIdentificationSequence", 1, 1, "CP_1457",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0028, 0x0010, 0x0028,
+      EVR_US, "SubjectRelativePositionInImage", 3, 3, "CP_1457",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0010, 0x0030, 0x0010, 0x0030,
       EVR_DA, "PatientBirthDate", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -1998,6 +2018,38 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "QualityControlSubjectTypeCodeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0010, 0x0212, 0x0010, 0x0212,
+      EVR_UC, "StrainDescription", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0213, 0x0010, 0x0213,
+      EVR_LO, "StrainNomenclature", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0214, 0x0010, 0x0214,
+      EVR_LO, "StrainStockNumber", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0215, 0x0010, 0x0215,
+      EVR_SQ, "StrainSourceRegistryCodeSequence", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0216, 0x0010, 0x0216,
+      EVR_SQ, "StrainStockSequence", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0217, 0x0010, 0x0217,
+      EVR_LO, "StrainSource", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0218, 0x0010, 0x0218,
+      EVR_UT, "StrainAdditionalInformation", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0219, 0x0010, 0x0219,
+      EVR_SQ, "StrainCodeSequence", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0010, 0x1000, 0x0010, 0x1000,
       EVR_LO, "OtherPatientIDs", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -20654,6 +20706,14 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "UsedSegmentsSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0062, 0x0020, 0x0062, 0x0020,
+      EVR_UT, "TrackingID", 1, 1, "CP_1496",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0062, 0x0021, 0x0062, 0x0021,
+      EVR_UI, "TrackingUID", 1, 1, "CP_1496",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0064, 0x0002, 0x0064, 0x0002,
       EVR_SQ, "DeformableRegistrationSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -20875,19 +20935,83 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0040, 0x0066, 0x0040,
-      EVR_UL, "LongPrimitivePointIndexList", 1, -1, "DICOM",
+      EVR_OL, "LongPrimitivePointIndexList", 1, 1, "CP_1499",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0041, 0x0066, 0x0041,
-      EVR_UL, "LongTrianglePointIndexList", 3, -1, "DICOM",
+      EVR_OL, "LongTrianglePointIndexList", 1, 1, "CP_1499",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0042, 0x0066, 0x0042,
-      EVR_UL, "LongEdgePointIndexList", 2, -1, "DICOM",
+      EVR_OL, "LongEdgePointIndexList", 1, 1, "CP_1499",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0043, 0x0066, 0x0043,
-      EVR_UL, "LongVertexPointIndexList", 1, -1, "DICOM",
+      EVR_OL, "LongVertexPointIndexList", 1, 1, "CP_1499",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0101, 0x0066, 0x0101,
+      EVR_SQ, "TrackSetSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0102, 0x0066, 0x0102,
+      EVR_SQ, "TrackSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0103, 0x0066, 0x0103,
+      EVR_OW, "RecommendedDisplayCIELabValueList", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0104, 0x0066, 0x0104,
+      EVR_SQ, "TrackingAlgorithmIdentificationSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0105, 0x0066, 0x0105,
+      EVR_UL, "TrackSetNumber", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0106, 0x0066, 0x0106,
+      EVR_LO, "TrackSetLabel", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0107, 0x0066, 0x0107,
+      EVR_UT, "TrackSetDescription", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0108, 0x0066, 0x0108,
+      EVR_SQ, "TrackSetAnatomicalTypeCodeSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0121, 0x0066, 0x0121,
+      EVR_SQ, "MeasurementsSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0124, 0x0066, 0x0124,
+      EVR_SQ, "TrackSetStatisticsSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0125, 0x0066, 0x0125,
+      EVR_OF, "FloatingPointValues", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0129, 0x0066, 0x0129,
+      EVR_OL, "TrackPointIndexList", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0130, 0x0066, 0x0130,
+      EVR_SQ, "TrackStatisticsSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0132, 0x0066, 0x0132,
+      EVR_SQ, "MeasurementValuesSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0133, 0x0066, 0x0133,
+      EVR_SQ, "DiffusionAcquisitionCodeSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0134, 0x0066, 0x0134,
+      EVR_SQ, "DiffusionModelCodeSequence", 1, 1, "Supplement_181",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0068, 0x6210, 0x0068, 0x6210,
@@ -21530,6 +21654,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "MatrixSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0070, 0x030b, 0x0070, 0x030b,
+      EVR_FD, "FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix", 16, 16, "CP_1487",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0070, 0x030c, 0x0070, 0x030c,
       EVR_CS, "FrameOfReferenceTransformationMatrixType", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -22446,6 +22574,62 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_FD, "DoubleExposureFieldDelta", 4, 4, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0074, 0x1401, 0x0074, 0x1401,
+      EVR_SQ, "BrachyTaskSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1402, 0x0074, 0x1402,
+      EVR_DS, "ContinuationStartTotalReferenceAirKerma", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1403, 0x0074, 0x1403,
+      EVR_DS, "ContinuationEndTotalReferenceAirKerma", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1404, 0x0074, 0x1404,
+      EVR_IS, "ContinuationPulseNumber", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1405, 0x0074, 0x1405,
+      EVR_SQ, "ChannelDeliveryOrderSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1406, 0x0074, 0x1406,
+      EVR_IS, "ReferencedChannelNumber", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1407, 0x0074, 0x1407,
+      EVR_DS, "StartCumulativeTimeWeight", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1408, 0x0074, 0x1408,
+      EVR_DS, "EndCumulativeTimeWeight", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1409, 0x0074, 0x1409,
+      EVR_SQ, "OmittedChannelSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140a, 0x0074, 0x140a,
+      EVR_CS, "ReasonForChannelOmission", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140b, 0x0074, 0x140b,
+      EVR_LO, "ReasonForChannelOmissionDescription", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140c, 0x0074, 0x140c,
+      EVR_IS, "ChannelDeliveryOrderIndex", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140d, 0x0074, 0x140d,
+      EVR_SQ, "ChannelDeliveryContinuationSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140e, 0x0074, 0x140e,
+      EVR_SQ, "OmittedApplicationSetupSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0076, 0x0001, 0x0076, 0x0001,
       EVR_LO, "ImplantAssemblyTemplateName", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -25004,6 +25188,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_FL, "AverageBeamDosePointSSD", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0090, 0x300a, 0x0090,
+      EVR_CS, "BeamDoseType", 1, 1, "CP_1431",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0091, 0x300a, 0x0091,
+      EVR_DS, "AlternateBeamDose", 1, 1, "CP_1431",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0092, 0x300a, 0x0092,
+      EVR_CS, "AlternateBeamDoseType", 1, 1, "CP_1431",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x00a0, 0x300a, 0x00a0,
       EVR_IS, "NumberOfBrachyApplicationSetups", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -25888,6 +26084,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_CS, "ScanMode", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0309, 0x300a, 0x0309,
+      EVR_CS, "ModulatedScanModeType", 1, 1, "CP_1432",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x030a, 0x300a, 0x030a,
       EVR_FL, "VirtualSourceAxisDistances", 2, 2, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -25996,6 +26196,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_LO, "PatientSupportAccessoryCode", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0355, 0x300a, 0x0355,
+      EVR_LO, "TrayAccessoryCode", 1, 1, "CP_1504",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x0356, 0x300a, 0x0356,
       EVR_FL, "FixationLightAzimuthalAngle", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -26208,6 +26412,54 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "DeviceMotionParameterCodeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0501, 0x300a, 0x0501,
+      EVR_FL, "DistalDepthFraction", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0502, 0x300a, 0x0502,
+      EVR_FL, "DistalDepth", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0503, 0x300a, 0x0503,
+      EVR_FL, "NominalRangeModulatioFractions", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0504, 0x300a, 0x0504,
+      EVR_FL, "NominalRangeModulatedRegionDepths", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0505, 0x300a, 0x0505,
+      EVR_SQ, "DepthDoseParametersSequence", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0506, 0x300a, 0x0506,
+      EVR_SQ, "DeliveredDepthDoseParametersSequence", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0507, 0x300a, 0x0507,
+      EVR_FL, "DeliveredDistalDepthFraction", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0508, 0x300a, 0x0508,
+      EVR_FL, "DeliveredDistalDepth", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0509, 0x300a, 0x0509,
+      EVR_FL, "DeliveredNominalRangeModulationFractions", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0510, 0x300a, 0x0510,
+      EVR_FL, "DeliveredNominalRangeModulatedRegionDepths", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0511, 0x300a, 0x0511,
+      EVR_CS, "DeliveredReferenceDoseDefinition", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0512, 0x300a, 0x0512,
+      EVR_CS, "ReferenceDoseDefinition", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300c, 0x0002, 0x300c, 0x0002,
       EVR_SQ, "ReferencedRTPlanSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
index cad9da7c80c3d833ebcd5c1c83ff8e1b877e72a3..e863e259e83e2c307b9c3bfcea92e61764280d7c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -101,7 +101,8 @@ static const char *DRTypeNames[] =
     "IMPLANT GROUP",
     "IMPLANT ASSY",
     "PLAN",
-    "SURFACE SCAN"
+    "SURFACE SCAN",
+    "TRACT"
 };
 
 static const short DIM_OF_DRTypeNames = OFstatic_cast(short, (sizeof(DRTypeNames) / sizeof(DRTypeNames[0])));
@@ -341,7 +342,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_FilmBox:
+        case ERT_FilmBox:  // retired
             switch (lowerRecord)
             {
                 case ERT_ImageBox:
@@ -353,7 +354,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_FilmSession:
+        case ERT_FilmSession:  // retired
             switch (lowerRecord)
             {
                 case ERT_FilmBox:
@@ -378,7 +379,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_PrintQueue:
+        case ERT_PrintQueue:  // retired
             switch (lowerRecord)
             {
                 case ERT_FilmSession:
@@ -390,7 +391,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_Results:
+        case ERT_Results:  // retired
             switch (lowerRecord)
             {
                 case ERT_Interpretation:
@@ -430,6 +431,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                 case ERT_Measurement:
                 case ERT_Plan:
                 case ERT_SurfaceScan:
+                case ERT_Tract:
                 case ERT_Private:
                     l_error = EC_Normal;
                     break;
@@ -454,7 +456,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_Topic:
+        case ERT_Topic:  // retired
             switch (lowerRecord)
             {
                 case ERT_Curve:
@@ -486,7 +488,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_Mrdr:
+        case ERT_Mrdr:  // retired
             l_error = EC_IllegalCall;
             break;
         case ERT_Curve:
@@ -524,6 +526,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
         case ERT_ImplantAssy:
         case ERT_Plan:
         case ERT_SurfaceScan:
+        case ERT_Tract:
         case ERT_Private:
             switch (lowerRecord)
             {
@@ -593,7 +596,7 @@ E_DirRecType DcmDirectoryRecord::lookForRecordType()
 static void hostToDicomFilename(char *fname)
 {
     /*
-    ** Massage filename into dicom format.
+    ** Massage filename into DICOM format.
     ** Eliminate any invalid characters.
     ** Most commonly there is a '.' at the end of a filename.
     */
@@ -1254,10 +1257,11 @@ void DcmDirectoryRecord::print(STD_NAMESPACE ostream&out,
 OFCondition DcmDirectoryRecord::writeXML(STD_NAMESPACE ostream &out,
                                          const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* in Native DICOM Model, there is no concept of a DICOMDIR */
-        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+        l_error = makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
             "Cannot convert Directory Record to Native DICOM Model");
     } else {
         /* XML start tag for "item" */
@@ -1278,16 +1282,18 @@ OFCondition DcmDirectoryRecord::writeXML(STD_NAMESPACE ostream &out,
             elementList->seek(ELP_first);
             do {
                 dO = elementList->get();
-                dO->writeXML(out, flags);
-            } while (elementList->seek(ELP_next));
+                l_error = dO->writeXML(out, flags);
+            } while (l_error.good() && elementList->seek(ELP_next));
+        }
+        if (l_error.good())
+        {
+            if (lowerLevelList->card() > 0)
+                lowerLevelList->writeXML(out, flags);
+            /* XML end tag for "item" */
+            out << "</item>" << OFendl;
         }
-        if (lowerLevelList->card() > 0)
-            lowerLevelList->writeXML(out, flags);
-        /* XML end tag for "item" */
-        out << "</item>" << OFendl;
-        /* always report success */
-        return EC_Normal;
     }
+    return l_error;
 }
 
 
index b1b67632c40fd19d5d96f65e126e7fbf63f1ac6b..2b577153da4b850d06c0e8b94735f416d490c34a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1465,7 +1465,7 @@ void DcmElement::writeXMLStartTag(STD_NAMESPACE ostream &out,
                     DCMDATA_WARN("Cannot write private creator for group 0x"
                         << STD_NAMESPACE hex << STD_NAMESPACE setfill('0') << STD_NAMESPACE setw(4)
                         << tag.getGTag() << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ')
-                        << " to XML output: Not present in dataset");
+                        << " to XML output: Not present in data set");
                 }
             }
         } else {
index 322c96a362f9c9c131c7cc68b7710edbf76acd9f..b757820a4552ece255b591d188d24b8f7a9b0719 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -181,6 +181,7 @@ void DcmFileFormat::print(STD_NAMESPACE ostream &out,
 OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
                                     const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* in Native DICOM Model, there is no concept of a "file format" */
@@ -188,13 +189,12 @@ OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
         if (dset != NULL)
         {
             /* write content of dataset */
-            return dset->writeXML(out, flags);
+            l_error = dset->writeXML(out, flags);
         } else {
-            return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
-                "Cannot convert to Native DICOM Model: No dataset present");
+            l_error = makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+                "Cannot convert to Native DICOM Model: No data set present");
         }
     } else {
-        OFCondition result = EC_CorruptedData;
         /* XML start tag for "file-format" */
         out << "<file-format";
         if (flags & DCMTypes::XF_useXMLNamespace)
@@ -208,14 +208,19 @@ OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
             itemList->seek(ELP_first);
             do {
                 dO = itemList->get();
-                dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
-            } while (itemList->seek(ELP_next));
-            result = EC_Normal;
+                l_error = dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
+            } while (l_error.good() && itemList->seek(ELP_next));
+        } else {
+            /* a file format should never be empty */
+            l_error = EC_CorruptedData;
+        }
+        if (l_error.good())
+        {
+            /* XML end tag for "file-format" */
+            out << "</file-format>" << OFendl;
         }
-        /* XML end tag for "file-format" */
-        out << "</file-format>" << OFendl;
-        return result;
     }
+    return l_error;
 }
 
 
index 2e55c64c201d35d32bdacb0c8f812b054c291f79..5494c9d1bd7a99c0ca4a3205b96e6e16b6f3e868 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -54,6 +54,7 @@
 #include "dcmtk/dcmdata/dcvrobow.h"
 #include "dcmtk/dcmdata/dcvrod.h"
 #include "dcmtk/dcmdata/dcvrof.h"
+#include "dcmtk/dcmdata/dcvrol.h"
 #include "dcmtk/dcmdata/dcvrpn.h"
 #include "dcmtk/dcmdata/dcvrsh.h"
 #include "dcmtk/dcmdata/dcvrsl.h"
@@ -176,7 +177,7 @@ int DcmItem::compare(const DcmItem& rhs) const
             if (rhsVal)
             {
                 int result = val->compare(*rhsVal);
-                if (val != 0)
+                if (result != 0)
                 {
                     return result;
                 }
@@ -494,6 +495,7 @@ void DcmItem::print(STD_NAMESPACE ostream &out,
 OFCondition DcmItem::writeXML(STD_NAMESPACE ostream &out,
                               const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (!(flags & DCMTypes::XF_useNativeModel))
     {
         /* XML start tag for "item" */
@@ -513,16 +515,18 @@ OFCondition DcmItem::writeXML(STD_NAMESPACE ostream &out,
         elementList->seek(ELP_first);
         do {
             dO = elementList->get();
-            dO->writeXML(out, flags);
-        } while (elementList->seek(ELP_next));
+            l_error = dO->writeXML(out, flags);
+        } while (l_error.good() && elementList->seek(ELP_next));
     }
-    if (!(flags & DCMTypes::XF_useNativeModel))
+    if (l_error.good())
     {
-        /* XML end tag for "item" */
-        out << "</item>" << OFendl;
+        if (!(flags & DCMTypes::XF_useNativeModel))
+        {
+            /* XML end tag for "item" */
+            out << "</item>" << OFendl;
+        }
     }
-    /* always report success */
-    return EC_Normal;
+    return l_error;
 }
 
 
@@ -1010,7 +1014,7 @@ OFCondition DcmItem::readTagAndLength(DcmInputStream &inStream,
             if (newEVR != vr.getEVR())
             {
                 /* ignore explicit VR in dataset if tag is defined in data dictionary */
-                DCMDATA_DEBUG("DcmItem::readTagAndLength() ignoring explicit VR in dataset ("
+                DCMDATA_DEBUG("DcmItem::readTagAndLength() ignoring explicit VR in data set ("
                     << vr.getVRName() << ") for element " << newTag
                     << ", using the one from data dictionary (" << newTag.getVRName() << ")");
             }
@@ -1179,7 +1183,7 @@ OFCondition DcmItem::readSubElement(DcmInputStream &inStream,
         {
             // produce diagnostics
             DCMDATA_WARN("DcmItem: Element " << newTag
-                << " found twice in one dataset/item, ignoring second entry");
+                << " found twice in one data set or item, ignoring second entry");
             delete subElem;
         }
     }
@@ -1291,9 +1295,9 @@ OFCondition DcmItem::read(DcmInputStream & inStream,
                 /* if desired, accept premature sequence delimitation item and continue as if item has been completely read. */
                 /* The stream position has been rewound to the start position of the sequence end */
                 /* delimiter tag in order to let DcmSequenceOfItems handle the delimiter in the reading routine. */
-                else if ( (errorFlag == EC_PrematureSequDelimitationItem) && dcmIgnoreParsingErrors.get() )
+                else if ((errorFlag == EC_PrematureSequDelimitationItem) && dcmIgnoreParsingErrors.get())
                 {
-                     DCMDATA_WARN("DcmItem: Sequence delimitation occured before all bytes announced by explicit item length could be read"
+                     DCMDATA_WARN("DcmItem: Sequence delimitation occurred before all bytes announced by explicit item length could be read"
                          << ", trying to continue as if item was completely read");
                     errorFlag = EC_ItemEnd;  // make sure that error code leads to normal return from item reading loop
                     break; // we are completed with the item since sequence is closed
@@ -1320,9 +1324,11 @@ OFCondition DcmItem::read(DcmInputStream & inStream,
                     /* for this element; hence lastElementComplete is true again */
                     if (errorFlag.good())
                         lastElementComplete = OFTrue;
+                    /* in data sets, group 0x0000 to 0x0003, 0x0005, 0x0007 and 0xFFFF are not allowed */
+                    if ((newTag.getGroup() == 0x0000) || (newTag.getGroup() == 0x0002) || !newTag.hasValidGroup())
+                        DCMDATA_WARN("DcmItem: Invalid Element " << newTag << " found in data set");
                 }
-            } else
-            {
+            } else {
                 /* if lastElementComplete is false, we have only read the current element's */
                 /* tag and length (and possibly VR) information as well as maybe some data */
                 /* data value information. We need to continue reading the data value */
@@ -1347,7 +1353,7 @@ OFCondition DcmItem::read(DcmInputStream & inStream,
                           ident() == EVR_dataset)
                     {
                         DCMDATA_WARN("DcmItem: Element " << newTag.getTagName() << " " << newTag
-                            << " encountered, skipping rest of dataset");
+                            << " encountered, skipping rest of data set");
                         readStopElem = OFTrue;
                     }
                 }
@@ -2290,15 +2296,18 @@ OFCondition newDicomElement(DcmElement *&newElement,
             break;
         case EVR_up : // for (0004,eeee) according to DICOM standard
         case EVR_UL :
-        {
-            // generate tag with VR from dictionary!
-            DcmTag ulupTag(tag.getXTag());
-            if (ulupTag.getEVR() == EVR_up)
-                newElement = new DcmUnsignedLongOffset(ulupTag, length);
-            else
-                newElement = new DcmUnsignedLong(tag, length);
-        }
-        break;
+            {
+                // generate tag with VR from dictionary!
+                DcmTag ulupTag(tag.getXTag());
+                if (ulupTag.getEVR() == EVR_up)
+                    newElement = new DcmUnsignedLongOffset(ulupTag, length);
+                else
+                    newElement = new DcmUnsignedLong(tag, length);
+            }
+            break;
+        case EVR_OL :
+            newElement = new DcmOtherLong(tag, length);
+            break;
         case EVR_FL :
             newElement = new DcmFloatingPointSingle(tag, length);
             break;
@@ -2853,6 +2862,7 @@ OFCondition DcmItem::findAndGetLongInt(const DcmTagKey& tagKey,
         switch (elem->ident())
         {
             case EVR_UL:
+            case EVR_OL:
             case EVR_up:
                 Uint32 ul;
                 status = elem->getUint32(ul, pos);
@@ -3328,6 +3338,9 @@ OFCondition DcmItem::putAndInsertString(const DcmTag& tag,
         case EVR_OF:
             elem = new DcmOtherFloat(tag);
             break;
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
         case EVR_PN:
             elem = new DcmPersonName(tag);
             break;
@@ -3713,6 +3726,9 @@ OFCondition DcmItem::putAndInsertUint32(const DcmTag& tag,
         case EVR_UL:
             elem = new DcmUnsignedLong(tag);
             break;
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
         case EVR_UNKNOWN:
             /* Unknown VR, e.g. tag not found in data dictionary */
             status = EC_UnknownVR;
@@ -3737,6 +3753,42 @@ OFCondition DcmItem::putAndInsertUint32(const DcmTag& tag,
 }
 
 
+OFCondition DcmItem::putAndInsertUint32Array(const DcmTag& tag,
+                                             const Uint32 *value,
+                                             const unsigned long count,
+                                             const OFBool replaceOld)
+{
+    OFCondition status = EC_Normal;
+    /* create new element */
+    DcmElement *elem = NULL;
+    switch(tag.getEVR())
+    {
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
+        case EVR_UL:
+            elem = new DcmUnsignedLong(tag);
+            break;
+        default:
+            status = EC_IllegalCall;
+            break;
+    }
+    if (elem != NULL)
+    {
+        /* put value */
+        status = elem->putUint32Array(value, count);
+        /* insert into dataset/item */
+        if (status.good())
+            status = insert(elem, replaceOld);
+        /* could not be inserted, therefore, delete it immediately */
+        if (status.bad())
+            delete elem;
+    } else if (status.good())
+        status = EC_MemoryExhausted;
+    return status;
+}
+
+
 OFCondition DcmItem::putAndInsertSint32(const DcmTag& tag,
                                         const Sint32 value,
                                         const unsigned long pos,
@@ -4028,6 +4080,9 @@ OFCondition DcmItem::insertEmptyElement(const DcmTag& tag,
         case EVR_OF:
             elem = new DcmOtherFloat(tag);
             break;
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
         case EVR_PN:
             elem = new DcmPersonName(tag);
             break;
index d9d3659c0e25e1f9a7c509f59130555618300020..8ab4f6f91ec880831f1851341f573d0485658cc5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -173,10 +173,11 @@ void DcmMetaInfo::print(STD_NAMESPACE ostream&out,
 OFCondition DcmMetaInfo::writeXML(STD_NAMESPACE ostream &out,
                                   const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* in Native DICOM Model, there is no concept of a "file format" */
-        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+        l_error = makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
             "Cannot convert File Meta Information to Native DICOM Model");
     } else {
         OFString xmlString;
@@ -193,14 +194,16 @@ OFCondition DcmMetaInfo::writeXML(STD_NAMESPACE ostream &out,
             do
             {
                 dO = elementList->get();
-                dO->writeXML(out, flags);
-            } while (elementList->seek(ELP_next));
+                l_error = dO->writeXML(out, flags);
+            } while (l_error.good() && elementList->seek(ELP_next));
+        }
+        if (l_error.good())
+        {
+            /* XML end tag for "meta-header" */
+            out << "</meta-header>" << OFendl;
         }
-        /* XML end tag for "meta-header" */
-        out << "</meta-header>" << OFendl;
-        /* always report success */
-        return EC_Normal;
     }
+    return l_error;
 }
 
 
index f77149461c3db703c01db17f6073c553a2cfaf51..892390e5364c010163bda0acc6c84a806896c76d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -210,49 +210,56 @@ OFCondition DcmPixelItem::createOffsetTable(const DcmOffsetList &offsetList)
 OFCondition DcmPixelItem::writeXML(STD_NAMESPACE ostream&out,
                                    const size_t flags)
 {
-    /* XML start tag for "item" */
-    out << "<pixel-item";
-    /* value length in bytes = 0..max */
-    out << " len=\"" << getLengthField() << "\"";
-    /* value loaded = no (or absent)*/
-    if (!valueLoaded())
-        out << " loaded=\"no\"";
-    /* pixel item contains binary data */
-    if (!(flags & DCMTypes::XF_writeBinaryData))
-        out << " binary=\"hidden\"";
-    else if (flags & DCMTypes::XF_encodeBase64)
-        out << " binary=\"base64\"";
-    else
-        out << " binary=\"yes\"";
-    out << ">";
-    /* write element value (if loaded) */
-    if (valueLoaded() && (flags & DCMTypes::XF_writeBinaryData))
+    if (flags & DCMTypes::XF_useNativeModel)
     {
-        /* encode binary data as Base64 */
-        if (flags & DCMTypes::XF_encodeBase64)
+        /* in Native DICOM Model, there is no concept of a "pixel item" */
+        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+            "Cannot convert Pixel Item to Native DICOM Model");
+    } else {
+        /* XML start tag for "item" */
+        out << "<pixel-item";
+        /* value length in bytes = 0..max */
+        out << " len=\"" << getLengthField() << "\"";
+        /* value loaded = no (or absent)*/
+        if (!valueLoaded())
+            out << " loaded=\"no\"";
+        /* pixel item contains binary data */
+        if (!(flags & DCMTypes::XF_writeBinaryData))
+            out << " binary=\"hidden\"";
+        else if (flags & DCMTypes::XF_encodeBase64)
+            out << " binary=\"base64\"";
+        else
+            out << " binary=\"yes\"";
+        out << ">";
+        /* write element value (if loaded) */
+        if (valueLoaded() && (flags & DCMTypes::XF_writeBinaryData))
         {
-            /* pixel items always contain 8 bit data, therefore, byte swapping not required */
-            OFStandard::encodeBase64(out, OFstatic_cast(Uint8 *, getValue()), OFstatic_cast(size_t, getLengthField()));
-        } else {
-            /* get and check 8 bit data */
-            Uint8 *byteValues = NULL;
-            if (getUint8Array(byteValues).good() && (byteValues != NULL))
+            /* encode binary data as Base64 */
+            if (flags & DCMTypes::XF_encodeBase64)
             {
-                const unsigned long count = getLengthField();
-                out << STD_NAMESPACE hex << STD_NAMESPACE setfill('0');
-                /* print byte values in hex mode */
-                out << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
-                for (unsigned long i = 1; i < count; i++)
-                    out << "\\" << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
-                /* reset i/o manipulators */
-                out << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ');
+                /* pixel items always contain 8 bit data, therefore, byte swapping not required */
+                OFStandard::encodeBase64(out, OFstatic_cast(Uint8 *, getValue()), OFstatic_cast(size_t, getLengthField()));
+            } else {
+                /* get and check 8 bit data */
+                Uint8 *byteValues = NULL;
+                if (getUint8Array(byteValues).good() && (byteValues != NULL))
+                {
+                    const unsigned long count = getLengthField();
+                    out << STD_NAMESPACE hex << STD_NAMESPACE setfill('0');
+                    /* print byte values in hex mode */
+                    out << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
+                    for (unsigned long i = 1; i < count; i++)
+                        out << "\\" << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
+                    /* reset i/o manipulators */
+                    out << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ');
+                }
             }
         }
+        /* XML end tag for "item" */
+        out << "</pixel-item>" << OFendl;
+        /* always report success */
+        return EC_Normal;
     }
-    /* XML end tag for "item" */
-    out << "</pixel-item>" << OFendl;
-    /* always report success */
-    return EC_Normal;
 }
 
 
index b4c77d3fc6e9ab829c55020a6408ddbac077496e..2b149e9b31b37ac6561008e84384700837570595 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -305,6 +305,7 @@ void DcmSequenceOfItems::print(STD_NAMESPACE ostream&out,
 OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
                                          const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* use common method from DcmElement to write start tag */
@@ -320,12 +321,17 @@ OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
             {
                 out << "<Item number=\"" << (itemNo++) << "\">" << OFendl;
                 dO = itemList->get();
-                dO->writeXML(out, flags);
+                l_error = dO->writeXML(out, flags);
+                /* exit loop in case of error */
+                if (l_error.bad()) break;
                 out << "</Item>" << OFendl;
             } while (itemList->seek(ELP_next));
         }
-        /* use common method from DcmElement to write end tag */
-        DcmElement::writeXMLEndTag(out, flags);
+        if (l_error.good())
+        {
+            /* use common method from DcmElement to write end tag */
+            DcmElement::writeXMLEndTag(out, flags);
+        }
     } else {
         OFString xmlString;
         DcmVR vr(getTag().getVR());
@@ -357,14 +363,16 @@ OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
             do
             {
                 dO = itemList->get();
-                dO->writeXML(out, flags);
-            } while (itemList->seek(ELP_next));
+                l_error = dO->writeXML(out, flags);
+            } while (l_error.good() && itemList->seek(ELP_next));
+        }
+        if (l_error.good())
+        {
+            /* XML end tag for "sequence" */
+            out << "</sequence>" << OFendl;
         }
-        /* XML end tag for "sequence" */
-        out << "</sequence>" << OFendl;
     }
-    /* always report success */
-    return EC_Normal;
+    return l_error;
 }
 
 
index fbb75c0f8b21b25ecc8c648990d682e75de816af..5e48791a933a3ba5a94813835236baa54b475534 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -136,7 +136,8 @@ static const UIDNameMap uidNameMap[] = {
     { UID_RFC2557MIMEEncapsulationTransferSyntax,              "RFC2557MIMEEncapsulation" },
     { UID_XMLEncodingTransferSyntax,                           "XMLEncoding" },
 
-    // Storage
+    // Storage (DICOM)
+    { UID_AcquisitionContextSRStorage,                         "AcquisitionContextSRStorage" },
     { UID_AmbulatoryECGWaveformStorage,                        "AmbulatoryECGWaveformStorage" },
     { UID_ArterialPulseWaveformStorage,                        "ArterialPulseWaveformStorage" },
     { UID_AutorefractionMeasurementsStorage,                   "AutorefractionMeasurementsStorage" },
@@ -218,7 +219,9 @@ static const UIDNameMap uidNameMap[] = {
     { UID_RawDataStorage,                                      "RawDataStorage" },
     { UID_RealWorldValueMappingStorage,                        "RealWorldValueMappingStorage" },
     { UID_RespiratoryWaveformStorage,                          "RespiratoryWaveformStorage" },
+    { UID_RTBeamsDeliveryInstructionStorage,                   "RTBeamsDeliveryInstructionStorage" },
     { UID_RTBeamsTreatmentRecordStorage,                       "RTBeamsTreatmentRecordStorage" },
+    { UID_RTBrachyApplicationSetupDeliveryInstructionStorage,  "RTBrachyApplicationSetupDeliveryInstructionStorage" },
     { UID_RTBrachyTreatmentRecordStorage,                      "RTBrachyTreatmentRecordStorage" },
     { UID_RTDoseStorage,                                       "RTDoseStorage" },
     { UID_RTImageStorage,                                      "RTImageStorage" },
@@ -237,6 +240,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_SurfaceScanMeshStorage,                              "SurfaceScanMeshStorage" },
     { UID_SurfaceScanPointCloudStorage,                        "SurfaceScanPointCloudStorage" },
     { UID_SurfaceSegmentationStorage,                          "SurfaceSegmentationStorage" },
+    { UID_TractographyResultsStorage,                          "TractographyResultsStorage" },
     { UID_TwelveLeadECGWaveformStorage,                        "TwelveLeadECGWaveformStorage" },
     { UID_UltrasoundImageStorage,                              "UltrasoundImageStorage" },
     { UID_UltrasoundMultiframeImageStorage,                    "UltrasoundMultiframeImageStorage" },
@@ -295,7 +299,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_MOVECompositeInstanceRootRetrieve,                         "MOVECompositeInstanceRootRetrieve" },
     { UID_RETIRED_MOVEPatientStudyOnlyQueryRetrieveInformationModel, "RETIRED_MOVEPatientStudyOnlyQueryRetrieveInformationModel" },
 
-    // Worklist
+    // Modality Worklist
     { UID_FINDModalityWorklistInformationModel,                "FINDModalityWorklistInformationModel" },
 
     // General Purpose Worklist
@@ -309,8 +313,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_ModalityPerformedProcedureStepRetrieveSOPClass,      "ModalityPerformedProcedureStepRetrieveSOPClass" },
     { UID_ModalityPerformedProcedureStepSOPClass,              "ModalityPerformedProcedureStepSOPClass" },
 
-    // Radiotherapy Treatment Delivery
-    { UID_RTBeamsDeliveryInstructionStorage,                   "RTBeamsDeliveryInstructionStorage" },
+    // Radiotherapy
     { UID_RTConventionalMachineVerification,                   "RTConventionalMachineVerification" },
     { UID_RTIonMachineVerification,                            "RTIonMachineVerification" },
 
@@ -533,6 +536,7 @@ static const int uidNameMap_size = OFstatic_cast(int, sizeof(uidNameMap) / sizeo
  */
 
 const char* dcmAllStorageSOPClassUIDs[] = {
+    UID_AcquisitionContextSRStorage,
     UID_AmbulatoryECGWaveformStorage,
     UID_ArterialPulseWaveformStorage,
     UID_AutorefractionMeasurementsStorage,
@@ -614,6 +618,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_RespiratoryWaveformStorage,
     UID_RTBeamsDeliveryInstructionStorage,
     UID_RTBeamsTreatmentRecordStorage,
+    UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
     UID_RTBrachyTreatmentRecordStorage,
     UID_RTDoseStorage,
     UID_RTImageStorage,
@@ -632,6 +637,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_SurfaceScanMeshStorage,
     UID_SurfaceScanPointCloudStorage,
     UID_SurfaceSegmentationStorage,
+    UID_TractographyResultsStorage,
     UID_TwelveLeadECGWaveformStorage,
     UID_UltrasoundImageStorage,
     UID_UltrasoundMultiframeImageStorage,
@@ -803,6 +809,7 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
     UID_XRayRadiationDoseSRStorage,
     UID_XRayRadiofluoroscopicImageStorage,
     // recently approved
+//  UID_AcquisitionContextSRStorage,
 //  UID_BreastProjectionXRayImageStorageForPresentation,
 //  UID_BreastProjectionXRayImageStorageForProcessing,
 //  UID_CompositingPlanarMPRVolumetricPresentationStateStorage
@@ -814,6 +821,8 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_LegacyConvertedEnhancedPETImageStorage,
 //  UID_ParametricMapStorage,
 //  UID_RadiopharmaceuticalRadiationDoseSRStorage,
+//  UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
+//  UID_TractographyResultsStorage,
 //  UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
 //  UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
     // retired
@@ -1043,6 +1052,7 @@ typedef struct {
 ** the size of an image being transmitted).
 */
 static const DcmModalityTable modalities[] = {
+    { UID_AcquisitionContextSRStorage,                             "SRa", 4096 },
     { UID_AmbulatoryECGWaveformStorage,                            "ECA", 4096 },
     { UID_ArterialPulseWaveformStorage,                            "WVa", 4096 },
     { UID_AutorefractionMeasurementsStorage,                       "OPa", 4096 },
@@ -1124,6 +1134,7 @@ static const DcmModalityTable modalities[] = {
     { UID_RespiratoryWaveformStorage,                              "WVr", 4096 },
     { UID_RTBeamsDeliveryInstructionStorage,                       "RTd", 4096 },
     { UID_RTBeamsTreatmentRecordStorage,                           "RTb", 4096 },
+    { UID_RTBrachyApplicationSetupDeliveryInstructionStorage,      "RTa", 4096 },
     { UID_RTBrachyTreatmentRecordStorage,                          "RTr", 4096 },
     { UID_RTDoseStorage,                                           "RD",  4096 },
     { UID_RTImageStorage,                                          "RI",  4096 },
@@ -1142,6 +1153,7 @@ static const DcmModalityTable modalities[] = {
     { UID_SurfaceScanMeshStorage,                                  "SSm", 4096 },
     { UID_SurfaceScanPointCloudStorage,                            "SSp", 4096 },
     { UID_SurfaceSegmentationStorage,                              "SGs", 4096 },
+    { UID_TractographyResultsStorage,                              "TR",  4096 },
     { UID_TwelveLeadECGWaveformStorage,                            "TLE", 4096 },
     { UID_UltrasoundImageStorage,                                  "US",  512 * 512 },
     { UID_UltrasoundMultiframeImageStorage,                        "USm", 512 * 512 },
@@ -1372,22 +1384,12 @@ typedef bool(WINAPI *pSnmpExtensionInit) (
         OUT HANDLE *hPollForTrapEvent,
         OUT AsnObjectIdentifier *supportedView);
 
-typedef bool(WINAPI *pSnmpExtensionTrap) (
-        OUT AsnObjectIdentifier *enterprise,
-        OUT AsnInteger32 *genericTrap,
-        OUT AsnInteger32 *specificTrap,
-        OUT AsnTimeticks *timeStamp,
-        OUT SnmpVarBindList *variableBindings);
-
 typedef bool(WINAPI *pSnmpExtensionQuery) (
         IN BYTE requestType,
         IN OUT SnmpVarBindList *variableBindings,
         OUT AsnInteger32 *errorStatus,
         OUT AsnInteger32 *errorIndex);
 
-typedef bool(WINAPI *pSnmpExtensionInitEx) (
-        OUT AsnObjectIdentifier *supportedView);
-
 typedef struct _ASTAT_
 {
     ADAPTER_STATUS adapt;
@@ -1454,7 +1456,6 @@ static unsigned char *getMACAddress(unsigned char buffer[6])
                 UINT OID_ipMACEntAddr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6};
                 AsnObjectIdentifier MIB_ifMACEntAddr = {sizeof(OID_ipMACEntAddr) / sizeof(UINT), OID_ipMACEntAddr};
                 AsnObjectIdentifier MIB_ifEntryType = {sizeof(OID_ifEntryType) / sizeof(UINT), OID_ifEntryType};
-                AsnObjectIdentifier MIB_ifEntryNum = {sizeof(OID_ifEntryNum) / sizeof(UINT), OID_ifEntryNum};
                 SnmpVarBindList varBindList;
                 SnmpVarBind varBind[2];
                 AsnInteger32 errorStatus;
@@ -1464,18 +1465,12 @@ static unsigned char *getMACAddress(unsigned char buffer[6])
                 int dtmp;
                 int j = 0;
                 pSnmpExtensionInit m_Init = (pSnmpExtensionInit)GetProcAddress(m_hInst2, "SnmpExtensionInit");
-                /* pSnmpExtensionInitEx m_InitEx = (pSnmpExtensionInitEx)GetProcAddress(m_hInst2, "SnmpExtensionInitEx"); */
                 pSnmpExtensionQuery m_Query = (pSnmpExtensionQuery)GetProcAddress(m_hInst2, "SnmpExtensionQuery");
-                /* pSnmpExtensionTrap m_Trap = (pSnmpExtensionTrap)GetProcAddress(m_hInst2, "SnmpExtensionTrap"); */
                 m_Init(GetTickCount(), &PollForTrapEvent, &SupportedView);
                 /* initialize the variable list to be retrieved by m_Query */
                 varBindList.list = varBind;
                 varBind[0].name = MIB_NULL;
                 varBind[1].name = MIB_NULL;
-                /* copy in the OID to find the number of entries in the interface table */
-                varBindList.len = 1;        /* only retrieving one item */
-                m_Copy(&varBind[0].name, &MIB_ifEntryNum);
-                ret = m_Query(SNMP_PDU_GETNEXT, &varBindList, &errorStatus, &errorIndex);
                 varBindList.len = 2;
                 /* copy in the OID of ifType, the type of interface */
                 m_Copy(&varBind[0].name, &MIB_ifEntryType);
index c09a4eae12ae35aefa32665e870701d83c693bd9..09c8b15087f34b8d13e008f58c884b26ee056426 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -34,8 +34,9 @@
 */
 OFGlobal<OFBool> dcmEnableUnknownVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUnlimitedTextVRGeneration(OFTrue);
-OFGlobal<OFBool> dcmEnableOtherFloatStringVRGeneration(OFTrue);
-OFGlobal<OFBool> dcmEnableOtherDoubleStringVRGeneration(OFTrue);
+OFGlobal<OFBool> dcmEnableOtherFloatVRGeneration(OFTrue);
+OFGlobal<OFBool> dcmEnableOtherDoubleVRGeneration(OFTrue);
+OFGlobal<OFBool> dcmEnableOtherLongVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUnlimitedCharactersVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUnknownVRConversion(OFFalse);
@@ -47,8 +48,9 @@ void dcmEnableGenerationOfNewVRs()
 {
     dcmEnableUnknownVRGeneration.set(OFTrue);
     dcmEnableUnlimitedTextVRGeneration.set(OFTrue);
-    dcmEnableOtherFloatStringVRGeneration.set(OFTrue);
-    dcmEnableOtherDoubleStringVRGeneration.set(OFTrue);
+    dcmEnableOtherFloatVRGeneration.set(OFTrue);
+    dcmEnableOtherDoubleVRGeneration.set(OFTrue);
+    dcmEnableOtherLongVRGeneration.set(OFTrue);
     dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration.set(OFTrue);
     dcmEnableUnlimitedCharactersVRGeneration.set(OFTrue);
 }
@@ -57,8 +59,9 @@ void dcmDisableGenerationOfNewVRs()
 {
     dcmEnableUnknownVRGeneration.set(OFFalse);
     dcmEnableUnlimitedTextVRGeneration.set(OFFalse);
-    dcmEnableOtherFloatStringVRGeneration.set(OFFalse);
-    dcmEnableOtherDoubleStringVRGeneration.set(OFFalse);
+    dcmEnableOtherFloatVRGeneration.set(OFFalse);
+    dcmEnableOtherDoubleVRGeneration.set(OFFalse);
+    dcmEnableOtherLongVRGeneration.set(OFFalse);
     dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration.set(OFFalse);
     dcmEnableUnlimitedCharactersVRGeneration.set(OFFalse);
 }
@@ -101,6 +104,7 @@ static const DcmVREntry DcmVRDict[] = {
     { EVR_OB, "OB", sizeof(Uint8), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
     { EVR_OD, "OD", sizeof(Float64), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
     { EVR_OF, "OF", sizeof(Float32), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
+    { EVR_OL, "OL", sizeof(Uint32), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
     { EVR_OW, "OW", sizeof(Uint16), DCMVR_PROP_EXTENDEDLENGTHENCODING, 0, DCM_UndefinedLength },
     { EVR_PN, "PN", sizeof(char), DCMVR_PROP_ISASTRING, 0, 64 },
     { EVR_SH, "SH", sizeof(char), DCMVR_PROP_ISASTRING, 0, 16 },
@@ -285,7 +289,7 @@ DcmVR::getValidEVR() const
             }
             break;
         case EVR_OF:
-            if (!dcmEnableOtherFloatStringVRGeneration.get())
+            if (!dcmEnableOtherFloatVRGeneration.get())
             {
                 if (dcmEnableUnknownVRGeneration.get())
                     evr = EVR_UN; /* handle OF as if UN */
@@ -294,7 +298,7 @@ DcmVR::getValidEVR() const
             }
             break;
         case EVR_OD:
-            if (!dcmEnableOtherDoubleStringVRGeneration.get())
+            if (!dcmEnableOtherDoubleVRGeneration.get())
             {
                 if (dcmEnableUnknownVRGeneration.get())
                     evr = EVR_UN; /* handle OD as if UN */
@@ -302,6 +306,15 @@ DcmVR::getValidEVR() const
                     evr = EVR_OB; /* handle OD as if OB */
             }
             break;
+        case EVR_OL:
+            if (!dcmEnableOtherLongVRGeneration.get())
+            {
+                if (dcmEnableUnknownVRGeneration.get())
+                    evr = EVR_UN; /* handle OL as if UN */
+                else
+                    evr = EVR_OB; /* handle OL as if OB */
+            }
+            break;
         case EVR_UR:
             if (!dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration.get())
             {
index 307e920cc4f08404c640458adc5f472061321028..a408dfa47eaae5c43e98717fae48e5bf8243e8e4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -165,7 +165,7 @@ void DcmFloatingPointDouble::print(STD_NAMESPACE ostream&out,
         errorFlag = getFloat64Array(doubleVals);
         if (doubleVals != NULL)
         {
-            const unsigned long count = getVM();
+            const unsigned long count = getLengthField() / OFstatic_cast(unsigned long, sizeof(Float64)) /* do not use getVM()! */;
             const unsigned long maxLength = (flags & DCMTypes::PF_shortenLongTagValues) ?
                 DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1) /*unlimited*/;
             unsigned long printedLength = 0;
index cd2a388f19fb17be6eacb72d2789ca23d4e51138..070719fb65278098073c883b44948fc9b070eb1f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -168,7 +168,7 @@ void DcmFloatingPointSingle::print(STD_NAMESPACE ostream&out,
         {
             const unsigned long count = getLengthField() / OFstatic_cast(unsigned long, sizeof(Float32)) /* do not use getVM()! */;
             const unsigned long maxLength = (flags & DCMTypes::PF_shortenLongTagValues) ?
-                DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1);
+                DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1) /*unlimited*/;
             unsigned long printedLength = 0;
             unsigned long newLength = 0;
             char buffer[64];
index 8200617d1f4f15f8a62a5ddb42fc157719ebbc9e..9ecd24e1030aad4abf5931729fa27fe4a5a8cd40 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013, OFFIS e.V.
+ *  Copyright (C) 2013-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -25,9 +25,7 @@
 #include "dcmtk/ofstd/ofuuid.h"
 
 #include "dcmtk/dcmdata/dcvrod.h"
-#include "dcmtk/dcmdata/dcvrfd.h"
 #include "dcmtk/dcmdata/dcswap.h"
-#include "dcmtk/dcmdata/dcuid.h"      /* for UID generation */
 
 
 // ********************************
@@ -79,7 +77,7 @@ DcmEVR DcmOtherDouble::ident() const
 
 
 OFCondition DcmOtherDouble::checkValue(const OFString & /*vm*/,
-                                      const OFBool /*oldFormat*/)
+                                       const OFBool /*oldFormat*/)
 {
     /* currently no checks are performed */
     return EC_Normal;
@@ -88,7 +86,7 @@ OFCondition DcmOtherDouble::checkValue(const OFString & /*vm*/,
 
 unsigned long DcmOtherDouble::getVM()
 {
-    /* value multiplicity for OF is defined as 1 */
+    /* value multiplicity for OD is defined as 1 */
     return 1;
 }
 
@@ -101,7 +99,7 @@ OFCondition DcmOtherDouble::writeXML(STD_NAMESPACE ostream &out,
 {
     /* always write XML start tag */
     writeXMLStartTag(out, flags);
-    /* OF data requires special handling in the Native DICOM Model format */
+    /* OD data requires special handling in the Native DICOM Model format */
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* for an empty value field, we do not need to do anything */
index cf0c87efa18c1a66cd94f465fb807d834e5a236f..d9acb36647c773c8372b63d0a9c76b56e4eeda15 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2013, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -25,9 +25,7 @@
 #include "dcmtk/ofstd/ofuuid.h"
 
 #include "dcmtk/dcmdata/dcvrof.h"
-#include "dcmtk/dcmdata/dcvrfl.h"
 #include "dcmtk/dcmdata/dcswap.h"
-#include "dcmtk/dcmdata/dcuid.h"      /* for UID generation */
 
 
 // ********************************
diff --git a/dcmdata/libsrc/dcvrol.cc b/dcmdata/libsrc/dcvrol.cc
new file mode 100644 (file)
index 0000000..60c0197
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Joerg Riesmeier
+ *
+ *  Purpose: Implementation of class DcmOtherLong
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/ofuuid.h"
+
+#include "dcmtk/dcmdata/dcvrol.h"
+#include "dcmtk/dcmdata/dcswap.h"
+
+
+// ********************************
+
+
+DcmOtherLong::DcmOtherLong(const DcmTag &tag,
+                           const Uint32 len)
+  : DcmUnsignedLong(tag, len)
+{
+}
+
+
+DcmOtherLong::DcmOtherLong(const DcmOtherLong &old)
+  : DcmUnsignedLong(old)
+{
+}
+
+
+DcmOtherLong::~DcmOtherLong()
+{
+}
+
+
+DcmOtherLong &DcmOtherLong::operator=(const DcmOtherLong &obj)
+{
+    DcmUnsignedLong::operator=(obj);
+    return *this;
+}
+
+
+OFCondition DcmOtherLong::copyFrom(const DcmObject& rhs)
+{
+  if (this != &rhs)
+  {
+    if (rhs.ident() != ident()) return EC_IllegalCall;
+    *this = OFstatic_cast(const DcmOtherLong &, rhs);
+  }
+  return EC_Normal;
+}
+
+
+// ********************************
+
+
+DcmEVR DcmOtherLong::ident() const
+{
+    return EVR_OL;
+}
+
+
+OFCondition DcmOtherLong::checkValue(const OFString & /*vm*/,
+                                     const OFBool /*oldFormat*/)
+{
+    /* currently no checks are performed */
+    return EC_Normal;
+}
+
+
+unsigned long DcmOtherLong::getVM()
+{
+    /* value multiplicity for OL is defined as 1 */
+    return 1;
+}
+
+
+// ********************************
+
+
+OFCondition DcmOtherLong::writeXML(STD_NAMESPACE ostream &out,
+                                   const size_t flags)
+{
+    /* always write XML start tag */
+    writeXMLStartTag(out, flags);
+    /* OL data requires special handling in the Native DICOM Model format */
+    if (flags & DCMTypes::XF_useNativeModel)
+    {
+        /* for an empty value field, we do not need to do anything */
+        if (getLengthField() > 0)
+        {
+            /* encode binary data as Base64 */
+            if (flags & DCMTypes::XF_encodeBase64)
+            {
+                out << "<InlineBinary>";
+                Uint8 *byteValues = OFstatic_cast(Uint8 *, getValue());
+                /* Base64 encoder requires big endian input data */
+                swapIfNecessary(EBO_BigEndian, gLocalByteOrder, byteValues, getLengthField(), sizeof(Uint32));
+                /* update the byte order indicator variable correspondingly */
+                setByteOrder(EBO_BigEndian);
+                OFStandard::encodeBase64(out, byteValues, OFstatic_cast(size_t, getLengthField()));
+                out << "</InlineBinary>" << OFendl;
+            } else {
+                /* generate a new UID but the binary data is not (yet) written. */
+                OFUUID uuid;
+                out << "<BulkData uuid=\"";
+                uuid.print(out, OFUUID::ER_RepresentationHex);
+                out << "\"/>" << OFendl;
+            }
+        }
+    } else {
+        /* write element value (if loaded) */
+        if (valueLoaded())
+        {
+            Uint32 *uintVals = NULL;
+            /* get and check 32 bit data */
+            if (getUint32Array(uintVals).good() && (uintVals != NULL))
+            {
+                /* we cannot use getVM() since it always returns 1 */
+                const size_t count = getLengthField() / sizeof(Uint32);
+                /* print unsigned long values in hex mode */
+                out << (*(uintVals++));
+                for (unsigned long i = 1; i < count; i++)
+                    out << "\\" << (*(uintVals++));
+            }
+        }
+    }
+    /* always write XML end tag */
+    writeXMLEndTag(out, flags);
+    /* always report success */
+    return EC_Normal;
+}
index 28a535abec8a869a23c75c961d58dd0e64e731ac..84bf281ae7ff8278d745574409e60db4af74d163 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -163,7 +163,7 @@ void DcmUnsignedLong::print(STD_NAMESPACE ostream&out,
         errorFlag = getUint32Array(uintVals);
         if (uintVals != NULL)
         {
-            const unsigned long count = getVM();
+            const unsigned long count = getLengthField() / OFstatic_cast(unsigned long, sizeof(Uint32)) /* do not use getVM()! */;
             const unsigned long maxLength = (flags & DCMTypes::PF_shortenLongTagValues) ?
                 DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1) /*unlimited*/;
             unsigned long printedLength = 0;
index 928940bd0f3fc33de9aa8418a055b12194cf85f6..30c417834683a321d0de811f42ae5cdce2549469 100644 (file)
@@ -1,5 +1,5 @@
 # declare executables
-DCMTK_ADD_EXECUTABLE(dcmdata_tests tests tpread ti2dbmp tchval tpath tvrdatim telemlen tparser tdict tvrds tvrfd tvrui tstrval tspchrs tvrpn tparent tfilter tvrcomp)
+DCMTK_ADD_EXECUTABLE(dcmdata_tests tests tpread ti2dbmp tchval tpath tvrdatim telemlen tparser tdict tvrds tvrfd tvrpn tvrui tvrol tstrval tspchrs tparent tfilter tvrcomp)
 
 # make sure executables are linked to the corresponding libraries
 DCMTK_TARGET_LINK_MODULES(dcmdata_tests i2d dcmdata oflog ofstd)
index a3b461ac4f7a8d4037eee7f5b5e3da9048a09477..2062e609d12762dc7bf7055af2224d6c8c4cdabd 100644 (file)
@@ -16,6 +16,8 @@ tchval.o: tchval.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -77,7 +79,8 @@ tchval.o: tchval.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/vrscan.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/vrscan.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
 tdict.o: tdict.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
@@ -97,6 +100,8 @@ tdict.o: tdict.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -142,6 +147,8 @@ telemlen.o: telemlen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -203,8 +210,8 @@ telemlen.o: telemlen.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcostrmb.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcostrmb.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -223,6 +230,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -264,6 +273,8 @@ tfilter.o: tfilter.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -316,6 +327,8 @@ ti2dbmp.o: ti2dbmp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -363,6 +376,8 @@ tparent.o: tparent.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -424,8 +439,9 @@ tparent.o: tparent.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h dctmacro.h \
- ../include/dcmtk/dcmdata/dcistrmb.h ../include/dcmtk/dcmdata/dcostrmb.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ dctmacro.h ../include/dcmtk/dcmdata/dcistrmb.h \
+ ../include/dcmtk/dcmdata/dcostrmb.h
 tparser.o: tparser.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -444,6 +460,8 @@ tparser.o: tparser.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -506,9 +524,9 @@ tparser.o: tparser.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcistrmb.h ../include/dcmtk/dcmdata/dcostrmb.h \
- dctmacro.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcistrmb.h \
../include/dcmtk/dcmdata/dcostrmb.h dctmacro.h
 tpath.o: tpath.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -527,6 +545,8 @@ tpath.o: tpath.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -588,7 +608,8 @@ tpath.o: tpath.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcpath.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpath.h
 tpread.o: tpread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
@@ -607,6 +628,8 @@ tpread.o: tpread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -668,8 +691,9 @@ tpread.o: tpread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrus.h ../include/dcmtk/dcmdata/dcvrsl.h \
  ../include/dcmtk/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcvrfd.h \
  ../include/dcmtk/dcmdata/dcvrof.h ../include/dcmtk/dcmdata/dcvrod.h \
- ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcostrmz.h \
- ../include/dcmtk/dcmdata/dcistrmz.h ../include/dcmtk/dcmdata/dcfcache.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcostrmz.h ../include/dcmtk/dcmdata/dcistrmz.h \
+ ../include/dcmtk/dcmdata/dcfcache.h
 tspchrs.o: tspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -688,6 +712,8 @@ tspchrs.o: tspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -735,6 +761,8 @@ tstrval.o: tstrval.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -782,6 +810,8 @@ tvrcomp.o: tvrcomp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvras.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -850,6 +880,8 @@ tvrdatim.o: tvrdatim.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -904,6 +936,8 @@ tvrds.o: tvrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -953,6 +987,8 @@ tvrfd.o: tvrfd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -983,6 +1019,58 @@ tvrfd.o: tvrfd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dctypes.h ../include/dcmtk/dcmdata/dcvr.h \
  ../include/dcmtk/dcmdata/dctag.h ../include/dcmtk/dcmdata/dctagkey.h \
  ../include/dcmtk/dcmdata/dcstack.h ../include/dcmtk/dcmdata/dcdeftag.h
+tvrol.o: tvrol.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dctypes.h ../include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../include/dcmtk/dcmdata/dcerror.h ../include/dcmtk/dcmdata/dcxfer.h \
+ ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
+ ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dcstack.h \
+ ../include/dcmtk/dcmdata/dclist.h ../include/dcmtk/dcmdata/dcpcache.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/dcvrul.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcdeftag.h
 tvrpn.o: tvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -1001,6 +1089,8 @@ tvrpn.o: tvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1049,6 +1139,8 @@ tvrui.o: tvrui.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcuid.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
index 563cc66fab08c16bc710c3acd6264ab018d0379a..d95ae9cdc5a8fd5e907750f6f9bf0c35f4df36ab 100644 (file)
@@ -22,8 +22,8 @@ LOCALLIBS = -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
 I2DLIBS = -li2d
 
 objs = tests.o tpread.o ti2dbmp.o tchval.o tpath.o tvrdatim.o telemlen.o tparser.o \
-       tdict.o tvrds.o tvrfd.o tvrui.o tstrval.o tspchrs.o tvrpn.o tparent.o \
-       tfilter.o tvrcomp.o
+       tdict.o tvrds.o tvrfd.o tvrui.o tvrol.o tstrval.o tspchrs.o tvrpn.o \
+       tparent.o tfilter.o tvrcomp.o
 
 progs = tests
 
index 9b966967ba09a5bb751593cba49e3471bd2f6366..4c2416acefe7204d8f727ccfc36d6ac19e7da765 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2015, OFFIS e.V.
+ *  Copyright (C) 2009-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -250,6 +250,7 @@ OFTEST(dcmdata_checkStringValue)
   CHECK_GOOD( "UI-10", DcmUniqueIdentifier::checkStringValue("1.2.3.4.5.6.7.8.9.0\\99", "2") )
   CHECK_GOOD( "UI-11", DcmUniqueIdentifier::checkStringValue("1.2.3.4.5.6.7.8.9.0.123.456.789.0.111222333444555666777888999000", "1") )
   CHECK_BAD ( "UI-12", DcmUniqueIdentifier::checkStringValue("1.2.3.4.5.6.7.8.9.0.123.456.789.10.111222333444555666777888999000", "1") )
+  CHECK_BAD ( "UI-13", DcmUniqueIdentifier::checkStringValue("007", "1") )
 
   /* test "Universal Resource Identifier or Universal Resource Locator (URI/URL)" */
   CHECK_GOOD( "UR-01", DcmUniversalResourceIdentifierOrLocator::checkStringValue("http://www.dcmtk.org/ ") )
index e731320b05f7e814368a07c1765560f26c0980d4..4b094ad2a55323c600c0af6a0d40956f0a613a87 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -111,6 +111,7 @@ OFTEST(dcmdata_elementLength_pixelSequence)
 TEST_VR(EVR_OB)
 TEST_VR(EVR_OD)
 TEST_VR(EVR_OF)
+TEST_VR(EVR_OL)
 TEST_VR(EVR_OW)
 TEST_VR(EVR_SQ)
 TEST_VR(EVR_UC)
index 335333fac6ee8d5d1b0059865a315837775fa49f..805f0879bb4baf467ba57d7cf879af03e0fe707e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015 OFFIS e.V.
+ *  Copyright (C) 2011-2016 OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -38,6 +38,7 @@ OFTEST_REGISTER(dcmdata_floatingPointDouble);
 OFTEST_REGISTER(dcmdata_personName);
 OFTEST_REGISTER(dcmdata_uniqueIdentifier_1);
 OFTEST_REGISTER(dcmdata_uniqueIdentifier_2);
+OFTEST_REGISTER(dcmdata_otherLong);
 OFTEST_REGISTER(dcmdata_VRCompare);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AE);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AS);
@@ -54,6 +55,7 @@ OFTEST_REGISTER(dcmdata_elementLength_EVR_LT);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OB);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OD);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OF);
+OFTEST_REGISTER(dcmdata_elementLength_EVR_OL);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OW);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OverlayData);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_PN);
index b7e8dcdfec6b24059ff90acd5f6af7f304b79384..e14a6a673fb0230ac0a5bf768ffe138eac9cae53 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014, OFFIS e.V.
+ *  Copyright (C) 2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -15,7 +15,7 @@
  *
  *  Author:  Michael Onken
  *
- *  Purpose: test program for compare() method of VR classes
+ *  Purpose: tests for compare() as well as < and > operators of VR classes
  *
  */
 
@@ -72,27 +72,41 @@ static void checkByteString(const DcmTagKey& key)
   obj1.putOFStringArray("TEST");
   obj2.putOFStringArray("TEST");
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putOFStringArray("TEST" /* same value*/);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second string longer
   obj2.putOFStringArray("TEST_LONG");
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putOFStringArray("TEST\\TEST");
   obj2.putOFStringArray("TEST\\TEST\\TEST");
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -104,33 +118,47 @@ static void checkAttributeTags()
   DcmAttributeTag objOtherTag(DCM_UndefinedTagKey);
 
   // Check equality
-  obj1.putTagVal(DcmTagKey(0010,0010));
-  obj2.putTagVal(DcmTagKey(0010,0010));
+  obj1.putTagVal(DCM_PatientName);
+  obj2.putTagVal(DCM_PatientName);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
-  objOtherTag.putTagVal(DcmTagKey(0010,0010));
+  objOtherTag.putTagVal(DCM_PatientName);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
-  obj2.putTagVal(DcmTagKey(0010,0020));
+  obj2.putTagVal(DCM_PatientID);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
-  obj1.putTagVal(DcmTagKey(0010,0010), 1); // VM = 2
-  obj2.putTagVal(DcmTagKey(0010,0010), 0);
-  obj2.putTagVal(DcmTagKey(0010,0010), 1);
-  obj2.putTagVal(DcmTagKey(0010,0010), 2); // VM = 3
+  obj1.putTagVal(DCM_PatientName, 1); // VM = 2
+  obj2.putTagVal(DCM_PatientName, 0);
+  obj2.putTagVal(DCM_PatientName, 1);
+  obj2.putTagVal(DCM_PatientName, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -145,20 +173,30 @@ static void checkFloatingPointDouble()
   obj1.putFloat64(10.0);
   obj2.putFloat64(10.0);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj2) && (obj1 >= obj1) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putFloat64(10.0);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putFloat64(100.50);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putFloat64(10.0);     // VM = 2
@@ -167,8 +205,12 @@ static void checkFloatingPointDouble()
   obj2.putFloat64(10.0, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -183,20 +225,30 @@ static void checkFloatingPointSingle()
   obj1.putFloat32(10.0);
   obj2.putFloat32(10.0);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putFloat32(10.0);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putFloat32(100.50);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putFloat32(10.0);     // VM = 2
@@ -205,8 +257,12 @@ static void checkFloatingPointSingle()
   obj2.putFloat32(10.0, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 template <typename BinaryOBOWType>
@@ -222,21 +278,31 @@ static void checkOtherByteOtherWord(const DcmTagKey& tagKey)
   obj1.putUint8Array(testData, 1);
   obj2.putUint8Array(testData, 1);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putUint8Array(testData, 1);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   Uint8 biggerTestData[1] = {101};
   obj2.putUint8Array(biggerTestData, 1);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   Uint8 largeVMTestData[2] = {100, 101};
@@ -245,8 +311,12 @@ static void checkOtherByteOtherWord(const DcmTagKey& tagKey)
   obj2.putUint8Array(evenLargerVMTestData, 3); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -261,20 +331,30 @@ static void checkSignedLong()
   obj1.putSint32(-10);
   obj2.putSint32(-10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putSint32(-10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putSint32(-5);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
+
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putSint32(-10);     // VM = 2
@@ -283,8 +363,12 @@ static void checkSignedLong()
   obj2.putSint32(-10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -299,20 +383,30 @@ static void checkSignedShort()
   obj1.putSint16(-10);
   obj2.putSint16(-10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putSint16(-10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putSint16(-5);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putSint16(-10);     // VM = 2
@@ -321,8 +415,12 @@ static void checkSignedShort()
   obj2.putSint16(-10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -337,20 +435,30 @@ static void checkUnsignedLong()
   obj1.putUint32(10);
   obj2.putUint32(10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putUint32(10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putUint32(10000);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putUint32(10);     // VM = 2
@@ -359,8 +467,12 @@ static void checkUnsignedLong()
   obj2.putUint32(10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -375,20 +487,30 @@ static void checkUnsignedShort()
   obj1.putUint16(10);
   obj2.putUint16(10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj2) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putUint16(10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putUint16(10000);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putUint16(10);     // VM = 2
@@ -397,8 +519,12 @@ static void checkUnsignedShort()
   obj2.putUint16(10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -408,31 +534,40 @@ static void checkDcmItemAndSequences()
   DcmItem obj1;
   DcmItem obj2;
 
-  obj1.putAndInsertUint16(DcmTagKey(0x0028,0x0010) /* Rows */, 10);
-  obj1.putAndInsertUint16(DcmTagKey(0x0028,0x0020) /* Columns */, 10);
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0010) /* Rows */, 10);
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0020) /* Columns */, 10);
+  obj1.putAndInsertUint16(DCM_Rows, 10);
+  obj1.putAndInsertUint16(DCM_Columns, 10);
+  obj2.putAndInsertUint16(DCM_Rows, 10);
+  obj2.putAndInsertUint16(DCM_Columns, 10);
 
   // Check equality
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj2) && (obj1 >= obj1) );
 
-  // Check values in second item larger
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0010) /* Rows */, 100);
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0020) /* Columns */, 100);
+  // Check values in second item larger. Make sure that the first value remains equal.
+  obj2.putAndInsertUint16(DCM_Columns, 100);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM (i.e. item cardinality):
   // obj1 has VM = 2
   // Make obj2 VM = 3 by adding another tag
-  obj2.insertEmptyElement(DcmTagKey(0x7fe0,0x0010) /* Pixel Data */);
+  obj2.insertEmptyElement(DCM_PixelData);
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2 );
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1 );
+  OFCHECK(obj2 >= obj1 );
 
   // Check sequences
 
@@ -446,8 +581,10 @@ static void checkDcmItemAndSequences()
 
   // Check equality
   OFCHECK_EQUAL(seq1.compare(seq2), 0);
+  OFCHECK( (seq1 <= seq2) && (seq2 <= seq1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(seq2.compare(seq1), 0);
+  OFCHECK( (seq2 >= seq1) && (seq1 >= seq2) );
 
   // Test different VM (i.e. sequence cardinality):
   // seq1 has VM = 2
@@ -455,8 +592,12 @@ static void checkDcmItemAndSequences()
   seq2.insertAtCurrentPos(new DcmItem());;
 
   OFCHECK(seq1.compare(seq2) < 0);
+  OFCHECK(seq1 < seq2);
+  OFCHECK(seq1 <= seq2);
   // Reverse test should yield opposite result
   OFCHECK(seq2.compare(seq1) > 0);
+  OFCHECK(seq2 > seq1);
+  OFCHECK(seq2 >= seq1);
 }
 
 
diff --git a/dcmdata/tests/tvrol.cc b/dcmdata/tests/tvrol.cc
new file mode 100644 (file)
index 0000000..96d2bfd
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Joerg Riesmeier
+ *
+ *  Purpose: test program for class DcmOtherLong
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmdata/dcdatset.h"
+#include "dcmtk/dcmdata/dcvrol.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+
+
+OFTEST(dcmdata_otherLong)
+{
+    DcmOtherLong otherLong(DCM_TrackPointIndexList);
+    /* append new values */
+    OFCHECK(otherLong.putUint32(1, 0).good());
+    OFCHECK(otherLong.putUint32(22, 1).good());
+    OFCHECK(otherLong.putUint32(333, 2).good());
+    OFCHECK(otherLong.putUint32(4444, 3).good());
+    OFCHECK(otherLong.putUint32(55555, 4).good());
+    OFCHECK(otherLong.putUint32(666666, 5).good());
+    OFCHECK(otherLong.putUint32(7777777, 6).good());
+    OFCHECK(otherLong.putUint32(88888888, 7).good());
+    OFCHECK(otherLong.putUint32(999999999, 8).good());
+    /* value multiplicity should always be 1 */
+    OFCHECK_EQUAL(otherLong.getVM(), 1);
+    /* get value as an array and check number of entries */
+    Uint32 *uintVals = NULL;
+    OFCHECK(otherLong.getUint32Array(uintVals).good());
+    OFCHECK(uintVals != NULL);
+    OFCHECK_EQUAL(otherLong.getLengthField() / sizeof(Uint32), 9);
+}
index b892dca85ac1dbe4e9302a88bab93b4da9344116..3ea913667fb0f85e78354407bbe014b7ea457ff6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -224,8 +224,8 @@ public:
 
   /** Set Derivation Description
    *  @param  value Value to be set (single value only) or "" for no value
-   *  @param  checkValue Check 'value' for conformance with VR (ST) and VM (1) if
-   *          enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setDerivationDescription(const OFString &value,
index 1cde4af816f3a113b0825d1430e62f7e3e8d261f..9f5f01d30ea1ab5f40ca0d752d3353f882968dfb 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -225,8 +225,8 @@ public:
 
   /** Set Frame Acquisition Number
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setFrameAcquisitionNumber(const Uint16& value,
@@ -281,8 +281,8 @@ public:
    *  @param  value Value that should be set (lowest index starts with 1)
    *  @param  pos The position of the value that should be set (lowest index
    *          starts with 0), i.e.\ select the 1st, 2nd, ..nth dimension
-   *  @param  checkValue If OFTrue, basic checks are performed whether the
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setDimensionIndexValues(const Uint32& value,
@@ -291,8 +291,8 @@ public:
 
   /** Set Temporal Position Index
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setTemporalPositionIndex(const Uint32& value,
@@ -309,8 +309,8 @@ public:
 
   /** Set In-Stack Position Number
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setInStackPositionNumber(const Uint32& value,
@@ -318,8 +318,8 @@ public:
 
   /** Set Frame Comments
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setFrameComments(const OFString& value,
index 0c125803332d2fe4fadc87699540f2c3828341e0..c7120d8628aa2e692e8ee8d16d018a0c9ad51e9c 100644 (file)
@@ -134,8 +134,8 @@ public:
 
   /** Set Window Width
    *  @param  value Value to be set (single value only) or "" for no value
-   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setWindowWidth(const OFString& value,
index 895f6bff9a57b8da067b1e3f3c26d1c617960733..4387acd63ec09277994ca9d70941d5c58198d665 100644 (file)
@@ -103,7 +103,7 @@ public:
 
   /** Set Pixel Spacing
    *  @param  value Value to be set (single value only) or "" for no value
-   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (1) if
+   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (2) if
    *          enabled
    *  @return EC_Normal if successful, an error code otherwise
    */
index 224395cf9f4c6614a97ba1da8b5d71edeadd236c..3e7f78ee10f2ed69a74bf4f226e4864f92b059c3 100644 (file)
@@ -101,7 +101,8 @@ public:
    *  hand corner (center of the first voxel transmitted) of the frame, in mm.
    *  @param  value X,Y or Z coordinate of upper left hand corner voxel in mm
    *  @param  pos pos 0 is x, pos 1 is Y, pos 2 addresses Z coordinate
-   *  @param  checkValue Check coordinates for validity, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setImagePositionVolume(const Float64& value,
@@ -113,7 +114,8 @@ public:
    *  @param  valueX X coordinate of upper left hand corner voxel in mm
    *  @param  valueY coordinate of upper left hand corner voxel in mm
    *  @param  valueZ coordinate of upper left hand corner voxel in mm
-   *  @param  checkValue Check coordinates for validity, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setImagePositionVolume(const Float64& valueX,
index 4217749df46619232d4d8b628dcd9f147fe1b2f8..1390ad5541ffadf0bf4ea61584a015bba6f0745a 100644 (file)
@@ -282,8 +282,8 @@ public:
    *  @param  value Value to be set. If Pixel Representation is -1 (signed
    *          pixel data) value  must be -2^15  < value < 2^15-1. Otherwise use
    *          setRealWorldValueFirstValueMappedUnSigned().
-   *  @param  checkValue Check 'value' for conformance with VR (SS) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueFirstValueMappeSigned(const Sint16 &value,
@@ -304,8 +304,8 @@ public:
    *  @param  value Value to be set. If Pixel Representation is -1 (signed
    *          pixel data) value  must be -2^15  < value < 2^15-1. Otherwise use
    *          setRealWorldValueLastValueMappedUnSigned().
-   *  @param  checkValue Check 'value' for conformance with VR (SS) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueLastValueMappedSigned(const Sint16 &value,
@@ -313,7 +313,8 @@ public:
 
   /** Set Real World Value Intercept
    *  @param  value Value to be set
-   *  @param  checkValue Check 'value' for conformance with VR (FD) and VM (1) if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueIntercept(const Float64& value,
@@ -321,7 +322,8 @@ public:
 
   /** Set Real World Value Slope
    *  @param  value Value to be set
-   *  @param  checkValue Check 'value' for conformance with VR (FD) and VM (1) if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueSlope(const Float64& value,
index f1e984a2d9129b4fed473597a0ce9bacb6a1ca88..e0a32bef53860949df1b5ed659a7aec376d12239 100644 (file)
@@ -40,6 +40,8 @@ fg.o: fg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -107,6 +109,7 @@ fg.o: fg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgbase.h
 fgbase.o: fgbase.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -121,6 +124,8 @@ fgbase.o: fgbase.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -219,6 +224,7 @@ fgbase.o: fgbase.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
@@ -252,6 +258,8 @@ fgderimg.o: fgderimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -350,6 +358,7 @@ fgderimg.o: fgderimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
@@ -405,6 +414,8 @@ fgfact.o: fgfact.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -473,6 +484,7 @@ fgfact.o: fgfact.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgderimg.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
@@ -534,6 +546,8 @@ fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
@@ -600,6 +614,7 @@ fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgbase.h ../include/dcmtk/dcmfg/fgtypes.h \
  ../include/dcmtk/dcmfg/fgdefine.h
@@ -653,6 +668,8 @@ fgframevoilut.o: fgframevoilut.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
@@ -720,6 +737,7 @@ fgframevoilut.o: fgframevoilut.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h
 fgimagedatatype.o: fgimagedatatype.cc \
@@ -772,6 +790,8 @@ fgimagedatatype.o: fgimagedatatype.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
@@ -839,6 +859,7 @@ fgimagedatatype.o: fgimagedatatype.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h
 fginterface.o: fginterface.cc \
@@ -893,6 +914,8 @@ fginterface.o: fginterface.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -958,6 +981,7 @@ fginterface.o: fginterface.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgtypes.h ../include/dcmtk/dcmfg/fgdefine.h \
  ../include/dcmtk/dcmfg/fg.h ../include/dcmtk/dcmfg/fgbase.h \
@@ -977,6 +1001,8 @@ fgpixmsr.o: fgpixmsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1073,6 +1099,7 @@ fgpixmsr.o: fgpixmsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1093,6 +1120,8 @@ fgplanor.o: fgplanor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1191,6 +1220,7 @@ fgplanor.o: fgplanor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgfact.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1246,6 +1276,8 @@ fgplanorvol.o: fgplanorvol.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1315,6 +1347,7 @@ fgplanorvol.o: fgplanorvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h
 fgplanpo.o: fgplanpo.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1330,6 +1363,8 @@ fgplanpo.o: fgplanpo.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1428,6 +1463,7 @@ fgplanpo.o: fgplanpo.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgfact.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1485,6 +1521,8 @@ fgplanposvol.o: fgplanposvol.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
@@ -1552,6 +1590,7 @@ fgplanposvol.o: fgplanposvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h
 fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
@@ -1568,6 +1607,8 @@ fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1666,6 +1707,7 @@ fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
@@ -1691,6 +1733,8 @@ fgseg.o: fgseg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1787,6 +1831,7 @@ fgseg.o: fgseg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1833,6 +1878,8 @@ fgtypes.o: fgtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1903,6 +1950,7 @@ fgtypes.o: fgtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
@@ -1972,6 +2020,8 @@ fgusimagedescription.o: fgusimagedescription.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
@@ -2039,6 +2089,7 @@ fgusimagedescription.o: fgusimagedescription.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgbase.h
 stack.o: stack.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2104,6 +2155,8 @@ stackinterface.o: stackinterface.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -2172,6 +2225,7 @@ stackinterface.o: stackinterface.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmfg/fginterface.h ../include/dcmtk/dcmfg/fgtypes.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fg.h \
index 635029816c87b7cba61c4e5dcf64143aaa5ff714..e8776da3e1cdefa35f3035a991bfa0fa9c5fc520 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -547,11 +547,8 @@ OFCondition DerivationImageItem::getDerivationDescription(OFString& value,
 OFCondition DerivationImageItem::setDerivationDescription(const OFString& value,
                                                           const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmShortText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_DerivationDescription.putOFStringArray(value);
-  return result;
-
+  (void)checkValue;
+  return m_DerivationDescription.putOFStringArray(value);
 }
 
 
index 89d35569054536e78e3b7425d0f1d11239ae1fd5..b2ffd8a96925c382837f3e52a00ffb8b2a536bed 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -265,6 +265,7 @@ OFCondition FGFrameContent::getFrameLabel(OFString& value,
 OFCondition FGFrameContent::setFrameAcquisitionNumber(const Uint16& value,
                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   m_FrameAcquisitonNumber.putUint16(value);
   return EC_Normal;
 }
@@ -290,6 +291,7 @@ OFCondition FGFrameContent::setFrameAcquisitionDateTime(const OFString& value,
 OFCondition FGFrameContent::setFrameAcquisitionDuration(const Float64& value,
                                                         const OFBool checkValue)
 {
+  (void)checkValue;
   // basic checking always included
   return m_FrameAcquisitionDuration.putFloat64(value);
 }
@@ -316,7 +318,8 @@ OFCondition FGFrameContent::setDimensionIndexValues(const Uint32& value,
                                                     const unsigned int pos,
                                                     const OFBool checkValue)
 {
-  // no meaningful check possible in this context
+  // no other meaningful checks possible in this context
+  (void)checkValue;
   if (value == 0)
   {
     DCMFG_ERROR("Cannot set dimension index value 0, must be >= 1)");
@@ -329,6 +332,7 @@ OFCondition FGFrameContent::setTemporalPositionIndex(const Uint32& value,
                                                      const OFBool checkValue)
 {
   // no meaningful check possible in this context
+  (void)checkValue;
   return m_TemporalPositionIndex.putUint32(value);
 }
 
@@ -346,6 +350,7 @@ OFCondition FGFrameContent::setInStackPositionNumber(const Uint32& value,
                                                      const OFBool checkValue)
 {
   // no meaningful check possible in this context
+  (void)checkValue;
   return m_InStackPositionNumber.putUint32(value);
 }
 
@@ -353,12 +358,11 @@ OFCondition FGFrameContent::setInStackPositionNumber(const Uint32& value,
 OFCondition FGFrameContent::setFrameComments(const OFString& value,
                                              const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmLongText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_FrameComments.putOFStringArray(value);
-  return result;
+  (void)checkValue;
+  return m_FrameComments.putOFStringArray(value);
 }
 
+
 OFCondition FGFrameContent::setFrameLabel(const OFString& value,
                                           const OFBool checkValue)
 {
index d88afe2b1a7ac6bbdbac7d442f134196c4e39de9..3b220122739019dc380bc95aa2b384a50a2fc9d1 100644 (file)
@@ -121,6 +121,7 @@ OFCondition FGFrameVOILUT::setWindowCenter(const OFString& value,
                                            const OFBool checkValue)
 {
   // no checks at the moment
+  (void)checkValue;
   return m_WindowCenter.putOFStringArray(value);
 }
 
@@ -128,6 +129,7 @@ OFCondition FGFrameVOILUT::setWindowWidth(const OFString& value,
                                           const OFBool checkValue)
 {
   // no checks at the moment
+  (void)checkValue;
   return m_WindowWidth.putOFStringArray(value);
 }
 
index ea83c8e460cd2a42ccfe4faff4b3f1302778ed33..db55dc01d3666b57069d253e6a9080e077cfbb1c 100644 (file)
@@ -101,7 +101,7 @@ OFCondition FGImageDataType::getZeroVelocityPixelValue(Sint32& value,
   if (!m_ZeroVelocityPixelValueSS.isEmpty())
   {
     Sint16 val = 0;
-    if ( (result = m_ZeroVelocityPixelValueSS.getSint16(val)).good())
+    if ( (result = m_ZeroVelocityPixelValueSS.getSint16(val, pos)).good())
     {
       value = val;
     }
@@ -109,7 +109,7 @@ OFCondition FGImageDataType::getZeroVelocityPixelValue(Sint32& value,
   else if (!m_ZeroVelocityPixelValueUS.isEmpty())
   {
     Uint16 val = 0;
-    if ( (result = m_ZeroVelocityPixelValueUS.getUint16(val)).good())
+    if ( (result = m_ZeroVelocityPixelValueUS.getUint16(val, pos)).good())
     {
       value = val;
     }
index 651fb9c3be04c6046a27a54a50896f336a35180a..0837810cd8083668a5459b2c78a9fe0b6987db5e 100644 (file)
@@ -653,7 +653,7 @@ OFBool FGInterface::check()
     }
     if (!foundFrameContent)
     {
-      DCMFG_ERROR("Frame Content FGfunctioanl group missing for frame # " << frameCount );
+      DCMFG_ERROR("Frame Content Functional group missing for frame # " << frameCount );
       numErrors++;
     }
   }
index 09a20410b571e80d4c25a3cc1805d8119845045c..9fa1eec9b3d52413f1cbac02cca47e4ef11209ce 100644 (file)
@@ -146,17 +146,33 @@ OFCondition FGPixelMeasures:: getSpacingBetweenSlices(Float64& value,
 OFCondition FGPixelMeasures::setPixelSpacing(const OFString& value,
                                              const OFBool checkValue)
 {
-  return m_PixelSpacing.putOFStringArray(value);
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "2") : EC_Normal;
+  if (result.good())
+  {
+    result = m_PixelSpacing.putOFStringArray(value);
+  }
+  return result;
 }
 
 
 OFCondition FGPixelMeasures::setSliceThickness(const OFString& value,
                                                const OFBool checkValue)
 {
-  return m_SliceThickness.putOFStringArray(value);
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+  {
+    result = m_SliceThickness.putOFStringArray(value);
+  }
+  return result;
 }
 
 OFCondition FGPixelMeasures::setSpacingBetweenSlices(const OFString& value,
                                                      const OFBool checkValue)
 {
-  return m_SpacingBetweenSlices.putOFStringArray(value);}
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+  {
+    result = m_SpacingBetweenSlices.putOFStringArray(value);
+  }
+  return result;
+}
index 6ad951807540c97d844654ffc20e57b71f4241b0..00eaf4647025154189f56cbc9f0610a6af62613e 100644 (file)
@@ -88,6 +88,7 @@ OFCondition FGPlanePositionVolume::setImagePositionVolume(const Float64& valueX,
                                                           const Float64& valueZ,
                                                           const OFBool checkValue)
 {
+  (void)checkValue;
   OFCondition result = m_ImagePositionVolume.putFloat64(valueX, 0);
   if (result.good()) result = m_ImagePositionVolume.putFloat64(valueY, 1);
   if (result.good()) result = m_ImagePositionVolume.putFloat64(valueZ, 2);
@@ -99,6 +100,8 @@ OFCondition FGPlanePositionVolume::setImagePositionVolume(const Float64& value,
                                                           const long unsigned int pos,
                                                           const OFBool checkValue)
 {
+  // no checks
+  (void)checkValue;
   if (pos > 2)
     return EC_ValueMultiplicityViolated;
 
index 0a41a3ee53d60a6c56b1d97c07af1cab629dfa9d..d3051b17756da7d2244efc50286b3a3d5f743ff4 100644 (file)
@@ -266,6 +266,7 @@ CodeSequenceMacro& FGRealWorldValueMapping::RWVMItem::getMeasurementUnitsCode()
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappedUnsigned(const Uint16& value,
                                                                                          const OFBool checkValue)
 {
+  (void)checkValue;
   DcmUnsignedShort* us = new DcmUnsignedShort(DCM_RealWorldValueFirstValueMapped);
   OFCondition result = us->putUint16(value);
   if (result.good()) result = m_Item->insert(us, OFTrue /* replace old */);
@@ -277,6 +278,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMapped
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappeSigned(const Sint16& value,
                                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   DcmSignedShort* ss = new DcmSignedShort(DCM_RealWorldValueFirstValueMapped);
   OFCondition result = ss->putSint16(value);
   if (result.good()) result = m_Item->insert(ss, OFTrue /* replace old */);
@@ -287,6 +289,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappeS
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedSigned(const Sint16& value,
                                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   DcmSignedShort* ss = new DcmSignedShort(DCM_RealWorldValueLastValueMapped);
   OFCondition result = ss->putSint16(value);
   if (result.good()) result = m_Item->insert(ss, OFTrue /* replace old */);
@@ -299,6 +302,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedS
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedUnsigned(const Uint16& value,
                                                                                         const OFBool checkValue)
 {
+  (void)checkValue;
   DcmUnsignedShort* us = new DcmUnsignedShort(DCM_RealWorldValueLastValueMapped);
   OFCondition result = us->putUint16(value);
   if (result.good()) result = m_Item->insert(us, OFTrue /* replace old */);
@@ -310,6 +314,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedU
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const Float64& value,
                                                                           const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertFloat64(DCM_RealWorldValueIntercept, value);
 }
 
@@ -317,6 +322,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueSlope(const Float64& value,
                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertFloat64(DCM_RealWorldValueSlope, value);
 }
 
@@ -324,6 +330,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueSlope(const Floa
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLUTData(const OFVector< Float64 >& value,
                                                                         const OFBool checkValue)
 {
+  (void)checkValue;
   DcmElement *elem = NULL;
   OFCondition result = m_Item->findAndGetElement(DCM_RealWorldValueLUTData, elem);
   if (result.good())
index 5685e7f2b4e9d08262a12194f44a9f7a08283618..de068190ca49dea5987517a5ed805858ca9ed5b3 100644 (file)
@@ -112,7 +112,16 @@ OFCondition FGUSImageDescription::setFrameType(const DcmFGTypes::E_FGUSFrameType
   value += "\\";
   value += derivedPixelContrast;
 
-  return m_FrameType.putOFStringArray(value);
+  OFCondition result;
+  if (checkValue)
+  {
+    result = DcmCodeString::checkStringValue(value, "4");
+  }
+  if (result.good())
+  {
+    result = m_FrameType.putOFStringArray(value);
+  }
+  return result;
 }
 
 
index 1a5e6e0bd5fd7f4ad6c5d5e1f10162170fdfba24..c2aa1a6d2721703c87b6bc637403c4540d928885 100644 (file)
@@ -39,6 +39,8 @@ dcm2pnm.o: dcm2pnm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcm2pnm.o: dcm2pnm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcrledrg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
@@ -177,6 +180,8 @@ dcmquant.o: dcmquant.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -245,6 +250,7 @@ dcmquant.o: dcmquant.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \
@@ -309,6 +315,8 @@ dcmscale.o: dcmscale.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -377,6 +385,7 @@ dcmscale.o: dcmscale.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \
index 5f351e4ae3cdbd4b1a50a0e66195bf9a0600cf52..40edbddc3ee0c89f6da56677f438f9a3831e73ac 100644 (file)
@@ -38,6 +38,8 @@ diargimg.o: diargimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -116,6 +118,8 @@ dicmyimg.o: dicmyimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/dicmyimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -185,6 +189,8 @@ dicoimg.o: dicoimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -275,6 +281,8 @@ dicoopx.o: dicoopx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimage/dicdefin.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dipixel.h
@@ -318,6 +326,8 @@ dicopx.o: dicopx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -388,6 +398,8 @@ dihsvimg.o: dihsvimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/dihsvimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -457,6 +469,8 @@ dilogger.o: dilogger.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimage/dicdefin.h
 dipalimg.o: dipalimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -498,6 +512,8 @@ dipalimg.o: dipalimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -576,6 +592,8 @@ dipipng.o: dipipng.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -641,6 +659,8 @@ dipitiff.o: dipitiff.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -719,6 +739,8 @@ diqtctab.o: diqtctab.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -746,7 +768,9 @@ diqtfs.o: diqtfs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 diqthash.o: diqthash.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimage/diqthash.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -794,6 +818,8 @@ diqthash.o: diqthash.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -884,6 +910,8 @@ diquant.o: diquant.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/diqttype.h \
  ../include/dcmtk/dcmimage/dicdefin.h ../include/dcmtk/dcmimage/diqtid.h \
@@ -973,6 +1001,8 @@ diregist.o: diregist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimage/dicdefin.h \
  ../include/dcmtk/dcmimage/dipalimg.h ../include/dcmtk/dcmimage/dicoimg.h \
@@ -1058,6 +1088,8 @@ dirgbimg.o: dirgbimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/dirgbimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -1127,6 +1159,8 @@ diybrimg.o: diybrimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/diybrimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -1201,6 +1235,8 @@ diyf2img.o: diyf2img.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/diyf2img.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -1275,6 +1311,8 @@ diyp2img.o: diyp2img.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/diyp2img.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
index 4f3993f16fea4aebbb015d343e421540301cfb62..9639ef87a484a581035ea39b5649c47dcf767b18 100644 (file)
@@ -39,6 +39,8 @@ dcmdspfn.o: dcmdspfn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcmdspfn.o: dcmdspfn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmimgle/digsdfn.h ../include/dcmtk/dcmimgle/didispfn.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diciefn.h \
@@ -139,6 +142,8 @@ dconvlum.o: dconvlum.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
index 55368d18bd7b39717d73e9925d8c61d34a234ac2..82e7895518c192a38c1b5ca66f0f168a47c2ccaa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2011, OFFIS e.V.
+ *  Copyright (C) 1996-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -221,7 +221,7 @@ class DCMTK_DCMIMGLE_EXPORT DiBaseLUT
      */
     inline Uint32 getAbsMaxRange() const
     {
-        return DicomImageClass::maxval(Bits, 0);
+        return OFstatic_cast(Uint32, DicomImageClass::maxval(Bits, 0));
     }
 
     /** check whether LUT is valid
index 8cd7ff6f0f36ba4f264dadae8139165dc707623f..016cadba250fe80c1fee254c2452b3a088d926e7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2011, OFFIS e.V.
+ *  Copyright (C) 1996-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -506,7 +506,7 @@ inline int DiOverlayPlane::reset(const unsigned long frame)
     int result = 0;
     if (Valid && (Data != NULL))
     {
-        const Uint32 frameNumber = FirstFrame + frame;
+        const Uint32 frameNumber = OFstatic_cast(Uint32, FirstFrame + frame);
         DCMIMGLE_TRACE("reset overlay plane in group 0x" << STD_NAMESPACE hex << GroupNumber << " to start position");
         DCMIMGLE_TRACE("  frameNumber: " << frameNumber << " (" << FirstFrame << "+" << frame
             << "), ImageFrameOrigin: " << ImageFrameOrigin << ", NumberOfFrames: " << NumberOfFrames);
index 123f799e63a7eb6a2215110e7f53b43c35c9e107..ae7db6133aa6ede17676d5f3e710aa10297f78fa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2010, OFFIS e.V.
+ *  Copyright (C) 1996-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 
 #include "dcmtk/dcmimgle/diutils.h"
 
+#ifndef DCMTK_EXPLICIT_SPECIALIZATION
 #ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
+#define DCMTK_EXPLICIT_SPECIALIZATION template<>
 #else
-#define EXPLICIT_SPECIALIZATION
+#define DCMTK_EXPLICIT_SPECIALIZATION
+#endif
 #endif
 
 
@@ -72,84 +74,84 @@ class DiPixelRepresentationTemplate
 /********************************************************************/
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Uint8>::getRepresentation() const
 {
     return EPR_Uint8;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Sint8>::getRepresentation() const
 {
     return EPR_Sint8;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Uint16>::getRepresentation() const
 {
     return EPR_Uint16;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Sint16>::getRepresentation() const
 {
     return EPR_Sint16;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Uint32>::getRepresentation() const
 {
     return EPR_Uint32;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Sint32>::getRepresentation() const
 {
     return EPR_Sint32;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Uint8>::isSigned() const
 {
     return 0;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Uint16>::isSigned() const
 {
     return 0;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Uint32>::isSigned() const
 {
     return 0;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Sint8>::isSigned() const
 {
     return 1;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Sint16>::isSigned() const
 {
     return 1;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Sint32>::isSigned() const
 {
     return 1;
index 2e925c4ac865df960fa7c7f799d232cf65066724..534af905ed562164500812c70c3d23aa781a9ab4 100644 (file)
@@ -38,6 +38,8 @@ dcmimage.o: dcmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -116,6 +118,8 @@ dibaslut.o: dibaslut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h
 diciefn.o: diciefn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/diciefn.h ../include/dcmtk/dcmimgle/didispfn.h \
@@ -161,7 +165,9 @@ diciefn.o: diciefn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dicielut.o: dicielut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/dicielut.h \
  ../include/dcmtk/dcmimgle/didislut.h \
@@ -205,6 +211,8 @@ dicielut.o: dicielut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h
 didislut.o: didislut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/didislut.h \
@@ -248,6 +256,8 @@ didislut.o: didislut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h
 didispfn.o: didispfn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -295,7 +305,9 @@ didispfn.o: didispfn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 didocu.o: didocu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -337,6 +349,8 @@ didocu.o: didocu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -405,6 +419,7 @@ didocu.o: didocu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmimgle/didocu.h ../include/dcmtk/dcmimgle/diobjcou.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diutils.h
@@ -453,7 +468,9 @@ digsdfn.o: digsdfn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 digsdlut.o: digsdlut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/digsdlut.h \
  ../include/dcmtk/dcmimgle/didislut.h \
@@ -497,6 +514,8 @@ digsdlut.o: digsdlut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimgle/displint.h
 diimage.o: diimage.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -539,6 +558,8 @@ diimage.o: diimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -611,6 +632,8 @@ diinpx.o: diinpx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h
 diluptab.o: diluptab.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -629,6 +652,8 @@ diluptab.o: diluptab.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -715,6 +740,8 @@ dimo1img.o: dimo1img.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimgle/dimo1img.h ../include/dcmtk/dcmimgle/dimoimg.h \
  ../include/dcmtk/dcmimgle/diimage.h \
@@ -778,6 +805,8 @@ dimo2img.o: dimo2img.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimgle/dimo2img.h ../include/dcmtk/dcmimgle/dimoimg.h \
  ../include/dcmtk/dcmimgle/diimage.h \
@@ -841,6 +870,8 @@ dimoimg.o: dimoimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -896,6 +927,8 @@ dimoimg3.o: dimoimg3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -964,6 +997,8 @@ dimoimg4.o: dimoimg4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1032,6 +1067,8 @@ dimoimg5.o: dimoimg5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1129,6 +1166,8 @@ dimomod.o: dimomod.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimgle/diobjcou.h ../include/dcmtk/dcmimgle/didocu.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1187,6 +1226,8 @@ dimoopx.o: dimoopx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/dimopx.h \
  ../include/dcmtk/dcmimgle/dipixel.h ../include/dcmtk/dcmimgle/dimomod.h \
  ../include/dcmtk/dcmimgle/diluptab.h \
@@ -1235,6 +1276,8 @@ dimopx.o: dimopx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/dimomod.h \
  ../include/dcmtk/dcmimgle/diluptab.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1282,6 +1325,8 @@ diovdat.o: diovdat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimgle/diovlay.h ../include/dcmtk/dcmimgle/diobjcou.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diovdat.h \
@@ -1327,6 +1372,8 @@ diovlay.o: diovlay.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimgle/diovlay.h ../include/dcmtk/dcmimgle/diobjcou.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diovdat.h \
@@ -1392,6 +1439,8 @@ diovlimg.o: diovlimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimgle/diovlimg.h \
  ../include/dcmtk/dcmimgle/dimo2img.h ../include/dcmtk/dcmimgle/dimoimg.h \
@@ -1462,6 +1511,8 @@ diovpln.o: diovpln.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1526,5 +1577,7 @@ diutils.o: diutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimgle/diutils.h ../include/dcmtk/dcmimgle/didefine.h
index f80be773cdbe0ef33594df9c42698789041032a9..aab805f56fe8a473da8dd31f7568f145cd055b4b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -117,7 +117,14 @@ DiImage::DiImage(const DiDocument *docu,
         /* start from first processed frame (might still exceed number of loaded frames) */
         RepresentativeFrame -= FirstFrame;
         int ok = (Document->getValue(DCM_Rows, Rows) > 0);
-        ok &= (Document->getValue(DCM_Columns, Columns) > 0);
+        if (!ok)
+            DCMIMGLE_ERROR("mandatory attribute 'Rows' is missing");
+        if (Document->getValue(DCM_Columns, Columns) == 0)
+        {
+            ok = 0;
+            DCMIMGLE_ERROR("mandatory attribute 'Columns' is missing");
+        }
+        /* check whether to proceed */
         if (!ok || ((Rows > 0) && (Columns > 0)))
         {
             ok &= (Document->getValue(DCM_BitsAllocated, BitsAllocated) > 0);
index 807e794bb212d004b5bf50a7d425d4c2f44921ca..58c13d50084da1cfce5c84a1f26bd914477cc23e 100644 (file)
@@ -5,6 +5,6 @@ PROJECT(dcmiod)
 INCLUDE_DIRECTORIES(${dcmiod_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${ZLIB_INCDIR})
 
 # recurse into subdirectories
-FOREACH(SUBDIR libsrc include)
+FOREACH(SUBDIR libsrc include tests)
   ADD_SUBDIRECTORY(${SUBDIR})
 ENDFOREACH(SUBDIR)
index af66effec17dba95d47c2b7f9359e4eb6af99802..6ca53d803d51b8d678f7682fda1fb4d44e60e58a 100644 (file)
@@ -82,4 +82,4 @@ distclean:
 
 dependencies:
        (cd libsrc && touch $(DEP) && $(MAKE) dependencies)
-#      (cd tests && touch $(DEP) && $(MAKE) dependencies)
+       (cd tests && touch $(DEP) && $(MAKE) dependencies)
diff --git a/dcmiod/include/dcmtk/dcmiod/cielabutil.h b/dcmiod/include/dcmtk/dcmiod/cielabutil.h
new file mode 100755 (executable)
index 0000000..435723d
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ *
+ *  Copyright (C) 2016, Pascal Getreuer, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmiod
+ *
+ *  Author:  Pascal Getreuer, Michael Onken
+ *
+ *  Purpose: Static helper functionality for CIE<->RGB color conversions
+ *
+ */
+
+#ifndef CIELABUTIL_H
+#define CIELABUTIL_H
+
+#include "dcmtk/config/osconfig.h"
+#define INCLUDE_CMATH                // for pow() function
+#include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/dcmiod/ioddef.h"
+
+
+/** Class supporting color space conversions from and to CIELab. In some IODs
+ *  DICOM stores CIELab color values which must often be converted to RGB for
+ *  display or other purposes. This is supported by the functions dicomLab2RGB()
+ *  and rgb2DicomLab(). The CIELab value range in DICOM is [0,65535] for all
+ *  three values. The RGB value range in this class is [0;1]. Further functions
+ *  are available in order to convert between RGB, "normal" CIELab value range
+ *  as well as CIEXYZ. The class uses double floating point precision for
+ *  calculations.
+ */
+class DCMTK_DCMIOD_EXPORT IODCIELabUtil
+{
+public:
+
+  /// D65 standard lightpoint X component for conversion from CIEXYZ to CIELab
+  static const double D65_WHITEPOINT_X;
+  /// D65 standard lightpoint Y component for conversion from CIEXYZ to CIELab
+  static const double D65_WHITEPOINT_Y;
+  /// D65 standard lightpoint Z component for conversion from CIEXYZ to CIELab
+  static const double D65_WHITEPOINT_Z;
+
+  /** Convert CIELab color representation as found in DICOM to sRGB value
+   *  representation. See DICOM part 3 for details.
+   *  @param  R Output sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Output sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Output sRGB "R" component (blue) with 0 <= B <= 1
+   *  @param  LDicom Input DICOM CIELab luminance component with 0 <= L <= 65535
+   *  @param  aDicom Input DICOM CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *  @param  bDicom Input DIOCM CIELab "b" component (blue<->yellow) with 0 <= a <= 65535
+   */
+  static void dicomLab2RGB(double& R, double& G, double& B, double LDicom, double aDicom, double bDicom);
+
+  /** Convert sRGB color representation to CIELab color representation as found
+   *  in DICOM. See DICOM part 3 for details.
+   *  @param  LDicom Output CIELab luminance component with 0 <= L <= 65535 as found
+   *          in DICOM
+   *  @param  aDicom Output CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *          as found in DICOM
+   *  @param  bDicom Output CIELab "b" component (blue<->yellow) with 0 <= b <= 65535
+   *          as found in DICOM
+   *  @param  R Input sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Input sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Input sRGB "R" component (blue) with 0 <= B <= 1
+   *
+   */
+  static void rgb2DicomLab(double& LDicom, double& aDicom, double& bDicom, double R, double G, double B);
+
+  /** Convert CIELab color representation as found in DICOM to CIELab
+   *  representation. See DICOM part 3 for details.
+   *  @param  L Output CIELab luminance component with 0 <= L <= 100
+   *  @param  a Output CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Output CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *  @param  LDicom Input CIELab luminance component with 0 <= L <= 65535 as found
+   *          in DICOM
+   *  @param  aDicom Input CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *          as found in DICOM
+   *  @param  bDicom Input CIELab "b" component (blue<->yellow) with 0 <= b <= 65535
+   *          as found in DICOM
+   */
+  static void dicomlab2Lab(double& L, double& a, double& b, double LDicom, double aDicom, double bDicom);
+
+  /** Convert CIELab color representation to CIELab color representation found
+   *  in DICOM. See DICOM part 3 for details.
+   *  @param  LDicom Output CIELab luminance component with 0 <= L <= 65535 as found
+   *          in DICOM
+   *  @param  aDicom Output CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *          as found in DICOM
+   *  @param  bDicom Output CIELab "b" component (blue<->yellow) with 0 <= b <= 65535
+   *          as found in DICOM
+   *  @param  L Input CIELab luminance component with 0 <= L <= 100
+   *  @param  a Input CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Input CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *
+   */
+  static void lab2DicomLab(double& LDicom, double& aDicom, double& bDicom, double L, double a, double b);
+
+  /** Convert sRGB color representation to CIELab representation
+   *  @param  L Output CIELab luminance component with 0 <= L <= 100
+   *  @param  a Output CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Output CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *  @param  R Input sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Input sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Input sRGB "R" component (blue) with 0 <= B <= 1
+   */
+  static void rgb2Lab(double& L, double& a, double& b, double R, double G, double B);
+
+  /** Convert sRGB color representation to CIE XYZ representation
+   *  @param  X Output CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Output CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Output CIELab XYZ "Z" component with 0 <= Z <= 1
+   *  @param  R Input sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Input sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Input sRGB "R" component (blue) with 0 <= B <= 1
+   */
+  static void rgb2Xyz(double& X, double& Y, double& Z, double R, double G, double B);
+
+
+  /** Convert CIELAB XYZ color representation to CIELab representation
+   *  @param  L Output CIELab luminance component with 0 <= L <= 100
+   *  @param  a Output CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Output CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *  @param  X Input CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Input CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Input CIELab XYZ "Z" component with 0 <= Z <= 1
+   */
+  static void xyz2Lab(double& L, double& a, double& b, double X, double Y, double Z);
+
+  /** Convert CIELab color representation to sRGB representation
+   *  @param  R Output sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Output sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Output sRGB "R" component (blue) with 0 <= B <= 1
+   *  @param  L Input CIELab luminance component with 0 <= L <= 100
+   *  @param  a Input CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Input CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   */
+  static void lab2Rgb(double& R, double& G, double& B, double L, double a, double b);
+
+  /** Convert CIELab color representation to CIE XYZ representation
+   *  @param  X Output CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Output CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Output CIELab XYZ "Z" component with 0 <= Z <= 1
+   *  @param  L Input CIELab luminance component with 0 <= L <= 100
+   *  @param  a Input CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Input CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   */
+  static void lab2Xyz(double& X, double& Y, double& Z, double L, double a, double b);
+
+  /** Convert CIE XYZ color representation to sRGB representation
+   *  @param  R Output sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Output sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Output sRGB "R" component (blue) with 0 <= B <= 1
+   *  @param  X Output CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Output CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Output CIELab XYZ "Z" component with 0 <= Z <= 1
+   */
+  static void xyz2Rgb(double& R, double& G, double& B, double X, double Y, double Z);
+
+protected:
+
+  /** Perform sRGB gamma correction, transforms R to R'
+   *  @param  n The value to correct
+   *  @return The gamma-corrected value
+   */
+  static double gammaCorrection(double n);
+
+  /** Peform inverse sRGB gamma correction, transforms R' to R
+   *  @param  n The value to invert
+   *  @return The gamma-inverted value
+   */
+  static double invGammaCorrection(double n);
+
+  /** CIE L*a*b* f function (used to convert XYZ to L*a*b*)
+   *  @param  n value to convert
+   *  @return The converted value
+   */
+  static double labf(double n);
+
+  /** CIE L*a*b* inverse f function
+   *  @param n The value to compute the inverse for
+   *  @return The resulting inverse
+   */
+  static double labfInv(double n);
+
+  /** Get the minimun of two numbers
+   *  @param  a First number
+   *  @param  b Second number
+   *  @return The minimum of a, b. a if a and b are equal.
+   */
+  static double min(double a, double b);
+
+  /** Get the minimun of three numbers
+   *  @param  a First number
+   *  @param  b Second number
+   *  @param  c Third number
+   *  @return The minimum of a, b and c. If a value occurs more than once,
+   *          then preference order then a is preferred if possible, b
+   *          otherwise
+   */
+  static double min3(double a, double b, double c);
+
+};
+
+#endif // CIELABUTIL_H
index 472e4af47669058334c3abb55a0d976e09476a9c..36be4f302378f332ba3e912b6a8a43f1a8bc639e 100644 (file)
@@ -842,7 +842,8 @@ public:
 
   /** Set Algorithm Parameters
    *  @param  value The value to be set
-   *  @param  checkValue If OFTrue, the given value is checked
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value could be set, error otherwise
    */
   virtual OFCondition setAlgorithmParameters(const OFString& value,
@@ -1176,7 +1177,8 @@ public:
 
   /** Set Local Namespace Entity ID
    *  @param  value Value to be set
-   *  @param  checkValue If OFTrue, value is checkd for validity
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if setting was successful, error otherwise
    */
   virtual OFCondition setLocalNamespaceEntityID(const OFString& value,
@@ -1184,7 +1186,8 @@ public:
 
   /** Set Universal Entity ID
    *  @param  value Value to be set
-   *  @param  checkValue If OFTrue, value is checkd for validity
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if setting was successful, error otherwise
    */
   virtual OFCondition setUniversalEntityID(const OFString& value,
@@ -1192,7 +1195,7 @@ public:
 
   /** Set Universal Entity ID Type
    *  @param  value Value to be set
-   *  @param  checkValue If OFTrue, value is checkd for validity
+   *  @param  checkValue If OFTrue, value is checked for validity
    *  @return EC_Normal if setting was successful, error otherwise
    */
   virtual OFCondition setUniversalEntityIDType(const OFString& value,
index 44323de0f2fa4d5b892f58dc13115e7e61f5283e..6e2f7c6b0c9870dedf97117d2bcb7170a11f4215 100644 (file)
@@ -418,8 +418,8 @@ public:
     checkElementValue(source, seqKey, cardinality, type, exists, module.c_str());
     if (source)
     {
-      const size_t card = source->card();
-      for (size_t count = 0; count < card; count++)
+      const unsigned long card = source->card();
+      for (unsigned long count = 0; count < card; count++)
       {
         DcmItem *item = source->getItem(count);
         if (item != NULL)
index 9057aa0b8bfff05a2ec1125eea3556cc51d6aefc..b5682dfe73d3ee898e88c7661f4e32be7ae8f2eb 100644 (file)
@@ -488,7 +488,6 @@ public:
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setLossyImageCompressionMethod(const OFString& value,
-                                                     const unsigned long pos,
                                                      const OFBool checkValue = OFTrue);
 
   /** Set Recognizable Visual Features
@@ -542,7 +541,8 @@ public:
   /** Set Depth(s) of Focus
    *  @param  value Value to be set
    *  @param  pos Index of the value to set (0..vm-1)
-   *  @param  checkValue Check 'value' for conformance if enabled, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency with
+   *          other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setDepthsOfFocus(const Float64 value,
@@ -551,7 +551,8 @@ public:
 
   /** Set Depth(s) of Focus (convenience function)
    *  @param  values Value(s) to be set
-   *  @param  checkValue Check 'value' for conformance if enabled, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency with
+   *          other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setDepthsOfFocus(const OFVector<Float64>& values,
index e6ce52eaf21b287c6210f0a3aca93eec646c3e1d..36010f922c76f91af6e159c8cfb886dcad8b004c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -171,8 +171,8 @@ public:
 
     /** Set Institution Address
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR (ST) and VM (1)
-     *          if enabled
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setInstitutionAddress(const OFString &value,
index 20dcdb074813c1729a51ced027dd9f990f6df338..38d1653504e5eae80683ef96f0356c86095a4e20 100644 (file)
@@ -25,6 +25,7 @@
 #include "dcmtk/config/osconfig.h"
 #include "dcmtk/dcmiod/modbase.h"
 #include "dcmtk/dcmiod/ioddef.h"
+#include "dcmtk/dcmiod/iodmacro.h"
 
 /** Class representing the General Series Module:
  *
@@ -83,6 +84,21 @@ public:
    */
   virtual void ensureInstanceUID(const OFBool correctInvalid = OFFalse);
 
+  /** Read attributes from given item into this class
+   *  @param source  The source to read from
+   *  @param clearOldData If OFTrue, old data is cleared before reading. Otherwise
+   *         old data is overwritten (or amended)
+   *  @result EC_Normal if reading was successful, error otherwise
+   */
+  virtual OFCondition read(DcmItem& source,
+                           const OFBool clearOldData = OFTrue);
+
+  /** Write attributes from this class into given item
+   *  @param  destination The item to write to
+   *  @result EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition write(DcmItem& destination);
+
    /** Get Modality
     *  @param  value Reference to variable in which the value should be stored
     *  @param  pos Index of the value to get (0..vm-1), -1 for all components
@@ -178,6 +194,12 @@ public:
     */
   virtual OFCondition getPatientPosition(OFString &value,
                                          const signed long pos = 0) const;
+
+  /** Get reference to Referenced Performed Procedure Step
+   *  @return Reference to PPS
+   */
+  virtual SOPInstanceReferenceMacro& getReferencedPPS();
+
   /** Set Modality
    *  @param  value Value to be set (single value only) or "" for no value
    *  @param  checkValue Check 'value' for conformance with VR (CS) and VM (1)
@@ -209,9 +231,8 @@ public:
 
   /** Set Laterality
    *  @param  value Value to be set
-   *  @param  checkValue Check value (no effect in this call but included for
-   *                consistency with other methods); provided value is
-   *                always checked.
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setLaterality(const DcmIODTypes::IOD_LATERALITY value,
@@ -294,6 +315,9 @@ private:
   /// The name of this module ("GeneralSeriesModule")
   static const OFString m_ModuleName;
 
+  /// Referenced Performed Procedure Step Sequence
+  SOPInstanceReferenceMacro m_ReferencedPPS;
+
 };
 
 #endif // MODGENERALSERIES_H
index 4ca0dcd306611c1c7634280f22f64050351579ec..d76be12f8bf6dcaee6583d3818741084ee28d1b4 100644 (file)
@@ -174,8 +174,8 @@ public:
 
   /** Set Rows
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *          with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRows(const Uint16 value,
@@ -183,16 +183,16 @@ public:
 
   /** Set Columns
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setColumns(const Uint16 value,
                                  const OFBool checkValue = OFTrue);
   /** Set Bits Allocated
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setBitsAllocated(const Uint16 value,
@@ -200,8 +200,8 @@ public:
 
   /** Set Bits Stored
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setBitsStored(const Uint16 value,
@@ -209,8 +209,8 @@ public:
 
   /** Set High Bit
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setHighBit(const Uint16 value,
@@ -246,7 +246,7 @@ public:
 
   /** Set ICC Profile
    *  @param  values Reference to variable in which the values should be stored
-   *  @param  length Length of array provied in values parameter
+   *  @param  length Length of array provided in values parameter
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setICCProfile(const Uint8* values,
index da0e8d352930929f5011ac6831f49cc02a3cfc0a..ded7064e43c809feae4c70012950d9bf552b1336 100644 (file)
@@ -190,7 +190,8 @@ public:
 
     /** Set Dimension Index Pointer
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR (PN) and VM (1) if enabled
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return status EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setDimensionIndexPointer(const DcmTagKey&value,
@@ -206,7 +207,8 @@ public:
 
     /** Set Dimension Index Functional Group Pointer
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR and VM if enabled
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return status EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setFunctionalGroupPointer(const DcmTagKey& value,
@@ -214,7 +216,9 @@ public:
 
     /** Set Dimension Index Functional Group PrivateCreator
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR and VM if enabled
+     *  @param  checkValue Check 'value. Not evaluated (here for consistency
+     *          with other setter functions).
+     *
      *  @return status EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setFunctionalGroupPrivateCreator(const OFString& value,
index d7e083243ffc74080b57fa78bc9d4e33747a10ec..b72cf005f980a93ae70a019ad0ef3ae173c30c4d 100644 (file)
@@ -155,8 +155,8 @@ public:
 
     /** Set Synchronization Channel
      *  @param  value Value to be set
-     *  @param  checkValue The check parameter is provided for consistency with
-     *          other methods but does not have any effect here.
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setSynchronizationChannel(const OFPair<Uint16, Uint16> &value,
index 174a1d8b2f7a951dca96891fead68d5d6b85b5cc..6fd8efbe77d6fc78c21bef92247645409685e6fe 100644 (file)
@@ -1,5 +1,6 @@
 # create library from source files
 DCMTK_ADD_LIBRARY(dcmiod
+  cielabutil
   iodcommn
   iodmacro
   iodimage
index c18bdb91d357e0aa12eff944a7ed36ddd45d45f2..7301f3c7fb9fd885dbbe85ca3a37e45e5f618408 100644 (file)
@@ -1,3 +1,10 @@
+cielabutil.o: cielabutil.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmiod/cielabutil.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../include/dcmtk/dcmiod/ioddef.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h
 iodcommn.o: iodcommn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/iodcommn.h ../include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -43,8 +50,10 @@ iodcommn.o: iodcommn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modpatient.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modpatient.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -111,6 +120,7 @@ iodcommn.o: iodcommn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/modbase.h \
  ../include/dcmtk/dcmiod/modpatientstudy.h \
@@ -170,8 +180,10 @@ iodimage.o: iodimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modpatient.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modpatient.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -238,6 +250,7 @@ iodimage.o: iodimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/modbase.h \
  ../include/dcmtk/dcmiod/modpatientstudy.h \
@@ -295,6 +308,8 @@ iodmacro.o: iodmacro.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -363,6 +378,7 @@ iodmacro.o: iodmacro.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -414,7 +430,10 @@ iodrules.o: iodrules.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
@@ -467,6 +486,8 @@ iodtypes.o: iodtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmiod/ioddef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
@@ -510,6 +531,8 @@ iodutil.o: iodutil.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
@@ -587,6 +610,8 @@ modacquisitioncontext.o: modacquisitioncontext.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -655,6 +680,7 @@ modacquisitioncontext.o: modacquisitioncontext.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -680,6 +706,8 @@ modbase.o: modbase.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -770,6 +798,8 @@ modcommoninstanceref.o: modcommoninstanceref.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -836,6 +866,7 @@ modcommoninstanceref.o: modcommoninstanceref.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -890,6 +921,8 @@ modenhequipment.o: modenhequipment.cc \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -935,6 +968,8 @@ modenhusimage.o: modenhusimage.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1029,6 +1064,7 @@ modenhusimage.o: modenhusimage.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1082,8 +1118,10 @@ modenhusseries.o: modenhusseries.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/iodmacro.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
@@ -1149,6 +1187,7 @@ modenhusseries.o: modenhusseries.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/modbase.h ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1200,6 +1239,8 @@ modequipment.o: modequipment.cc \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1243,6 +1284,8 @@ modfor.o: modfor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1340,8 +1383,10 @@ modgeneralimage.o: modgeneralimage.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1394,6 +1439,8 @@ modgeneralseries.o: modgeneralseries.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1433,24 +1480,64 @@ modgeneralseries.o: modgeneralseries.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofmap.h \
- ../include/dcmtk/dcmiod/iodtypes.h \
+ ../include/dcmtk/dcmiod/iodtypes.h ../include/dcmtk/dcmiod/iodmacro.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
  ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
- ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodutil.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
 modgeneralstudy.o: modgeneralstudy.cc \
  ../../config/include/dcmtk/config/osconfig.h \
@@ -1473,6 +1560,8 @@ modgeneralstudy.o: modgeneralstudy.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1567,6 +1656,7 @@ modgeneralstudy.o: modgeneralstudy.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1586,6 +1676,8 @@ modhelp.o: modhelp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1646,6 +1738,8 @@ modimagepixel.o: modimagepixel.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1743,8 +1837,10 @@ modmultiframedimension.o: modmultiframedimension.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1786,6 +1882,8 @@ modmultiframefg.o: modmultiframefg.cc \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1889,6 +1987,8 @@ modpatient.o: modpatient.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1955,6 +2055,7 @@ modpatient.o: modpatient.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -2008,6 +2109,8 @@ modpatientstudy.o: modpatientstudy.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2074,6 +2177,7 @@ modpatientstudy.o: modpatientstudy.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -2125,6 +2229,8 @@ modsegmentationseries.o: modsegmentationseries.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2191,6 +2297,7 @@ modsegmentationseries.o: modsegmentationseries.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmiod/modbase.h ../include/dcmtk/dcmiod/ioddef.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
@@ -2217,6 +2324,8 @@ modsopcommon.o: modsopcommon.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2296,6 +2405,8 @@ modsynchronization.o: modsynchronization.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2370,6 +2481,8 @@ modusfor.o: modusfor.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
index 1b6bbc217fdc5aaca4d83723252245fa458db47d..5cfeb14568e58d6c2921831b4ba05f61cda7157a 100644 (file)
@@ -20,8 +20,8 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
 
 LOCALDEFS =
 
-objs = iodcommn.o  iodmacro.o iodimage.o iodrules.o iodutil.o iodtypes.o  \
-       modacquisitioncontext.o modbase.o modcommoninstanceref.o \
+objs =  cielabutil.o iodcommn.o  iodmacro.o iodimage.o iodrules.o iodutil.o \
+       iodtypes.o modacquisitioncontext.o modbase.o modcommoninstanceref.o \
        modenhequipment.o modenhusimage.o modenhusseries.o modequipment.o \
        modfor.o modgeneralimage.o modgeneralseries.o modgeneralstudy.o \
        modhelp.o  modimagepixel.o  modmultiframefg.o  \
diff --git a/dcmiod/libsrc/cielabutil.cc b/dcmiod/libsrc/cielabutil.cc
new file mode 100755 (executable)
index 0000000..56189eb
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ *
+ *  Copyright (C) 2005–2010, Pascal Getreuer
+ *  Copyright (C) 2016, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmiod
+ *
+ *  Author:  Pascal Getreuer, Michael Onken
+ *
+ *  Purpose: Static helper functionality for CIE<->RGB color conversions
+ *
+ */
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmiod/cielabutil.h"
+#define INCLUDE_CMATH                // for pow() function
+#include "dcmtk/ofstd/ofstdinc.h"
+
+// Initialize white points of D65 light point (CIELab standard white point)
+const double IODCIELabUtil::D65_WHITEPOINT_X = 0.950456;
+const double IODCIELabUtil::D65_WHITEPOINT_Y = 1.0;
+const double IODCIELabUtil::D65_WHITEPOINT_Z = 1.088754;
+
+
+void IODCIELabUtil::dicomLab2RGB(double& R, double& G, double& B, double LDicom, double aDicom, double bDicom)
+{
+  double L, a, b;
+  dicomlab2Lab(L, a, b, LDicom, aDicom, bDicom);
+  lab2Rgb(R, G, B, L, a, b);
+}
+
+
+void IODCIELabUtil::rgb2DicomLab(double& LDicom, double& aDicom, double& bDicom, double R, double G, double B)
+{
+  double L, a, b;
+  rgb2Lab(L, a, b, R, G, B);
+  lab2DicomLab(LDicom, aDicom, bDicom, R, G, B);
+}
+
+
+void IODCIELabUtil::dicomlab2Lab(double& L, double& a, double& b, double LDicom, double aDicom, double bDicom)
+{
+  L = ((LDicom * 100.0) / 65535.0); // results in 0 <= L <= 100
+  a = ((aDicom * 255.0) / 65535.0) - 128; // results in -128 <= a <= 127
+  b = ((bDicom * 255.0) / 65535.0) - 128; // results in -128 <= b <= 127
+}
+
+
+void IODCIELabUtil::lab2DicomLab(double& LDicom, double& aDicom, double& bDicom, double L, double a, double b)
+{
+  LDicom = L * 65535.0 / 100.0; // results in 0 <= L <= 65535
+  aDicom = (a + 128) * 65535.0 / 255.0; // results in 0 <= a <= 65535
+  bDicom = (b + 128) * 65535.0 / 255.0; // results in 0 <= b <= 65535
+}
+
+
+void IODCIELabUtil::rgb2Lab(double& L, double& a, double& b, double R, double G, double B)
+{
+  double X, Y, Z;
+  rgb2Xyz(X, Y, Z, R, G, B);
+  xyz2Lab(L, a, b, X, Y, Z);
+}
+
+
+double IODCIELabUtil::gammaCorrection(double n)
+{
+  if ((n) <= 0.0031306684425005883)
+  {
+    return 12.92 * (n);
+  }
+  else
+  {
+    return (1.055*pow((n), 0.416666666666666667) - 0.055);
+  }
+}
+
+
+double IODCIELabUtil::invGammaCorrection(double n)
+{
+  if ((n) <= 0.0404482362771076)
+  {
+    return ((n) / 12.92);
+  }
+  else
+  {
+    return ( pow(((n) + 0.055)/1.055, 2.4) );
+  }
+}
+
+
+void IODCIELabUtil::rgb2Xyz(double& X, double& Y, double& Z, double R, double G, double B)
+{
+  R = invGammaCorrection(R);
+  G = invGammaCorrection(G);
+  B = invGammaCorrection(B);
+  X = (double)(0.4123955889674142161*R + 0.3575834307637148171*G + 0.1804926473817015735*B);
+  Y = (double)(0.2125862307855955516*R + 0.7151703037034108499*G + 0.07220049864333622685*B);
+  Z = (double)(0.01929721549174694484*R + 0.1191838645808485318*G + 0.9504971251315797660*B);
+}
+
+
+void IODCIELabUtil::xyz2Lab(double& L, double& a, double& b, double X, double Y, double Z)
+{
+  X /= D65_WHITEPOINT_X;
+  Y /= D65_WHITEPOINT_Y;
+  Z /= D65_WHITEPOINT_Z;
+  X = labf(X);
+  Y = labf(Y);
+  Z = labf(Z);
+  L = 116*Y - 16;
+  a = 500*(X - Y);
+  b = 200*(Y - Z);
+}
+
+
+void IODCIELabUtil::lab2Rgb(double& R, double& G, double& B, double L, double a, double b)
+{
+  double  X, Y, Z;
+  lab2Xyz(X, Y, Z, L, a, b);
+  xyz2Rgb(R, G, B, X, Y, Z);
+}
+
+
+void IODCIELabUtil::lab2Xyz(double& X, double& Y, double& Z, double L, double a, double b)
+{
+  L = (L + 16)/116;
+  a = L + a/500;
+  b = L - b/200;
+  X = D65_WHITEPOINT_X * labfInv(a);
+  Y = D65_WHITEPOINT_Y * labfInv(L);
+  Z = D65_WHITEPOINT_Z * labfInv(b);
+}
+
+
+void IODCIELabUtil::xyz2Rgb(double& R, double& G, double& B, double X, double Y, double Z)
+{
+  double R1, B1, G1, Min;
+
+  R1 = (double)( 3.2406*X - 1.5372*Y - 0.4986*Z);
+  G1 = (double)(-0.9689*X + 1.8758*Y + 0.0415*Z);
+  B1 = (double)( 0.0557*X - 0.2040*Y + 1.0570*Z);
+
+  Min = min3(R1, G1, B1);
+
+  /* Force nonnegative values so that gamma correction is well-defined. */
+  if(Min < 0)
+  {
+    R1 -= Min;
+    G1 -= Min;
+    B1 -= Min;
+  }
+
+  /* Transform from RGB to R'G'B' */
+  R = gammaCorrection(R1);
+  G = gammaCorrection(G1);
+  B = gammaCorrection(B1);
+}
+
+
+double IODCIELabUtil::labf(double n)
+{
+  if (n >= 8.85645167903563082e-3)
+  {
+    return ( pow(n, 0.333333333333333) );
+  }
+  else
+  {
+    return ( (841.0/108.0)*(n) + (4.0/29.0) );
+  }
+}
+
+
+double IODCIELabUtil::labfInv(double n)
+{
+  if ( (n) >= 0.206896551724137931 )
+  {
+    return (n)*(n)*(n);
+  }
+  else
+  {
+    return (108.0/841.0)*((n) - (4.0/29.0));
+  }
+}
+
+
+double IODCIELabUtil::min(double a, double b)
+{
+  if (a <= b)
+    return a;
+  else
+    return b;
+}
+
+
+double IODCIELabUtil::min3(double a, double b, double c)
+{
+  if (a <= b)
+    return min(a,c);
+  else
+    return min (b,c);
+}
index 909a0c54d83d115702c25778d305bf7a97037b37..2e87256444079a2ec23010ba3c338ec7a376e152 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -536,6 +536,7 @@ OFCondition ImageSOPInstanceReferenceMacro::setReferencedFrameNumber(const OFVec
 OFCondition ImageSOPInstanceReferenceMacro::addReferencedFrameNumber(const Uint16& value,
                                                                      const OFBool checkValue)
 {
+  (void)checkValue;
   const unsigned long count = ReferencedFrameNumber.getVM();
   return ReferencedFrameNumber.putUint16(value, count /* starts with 0, so add new value at the end */);
 }
@@ -552,6 +553,7 @@ OFCondition ImageSOPInstanceReferenceMacro::setReferencedSegmentNumber(const OFV
 OFCondition ImageSOPInstanceReferenceMacro::addReferencedSegmentNumber(const Uint16& value,
                                                                        const OFBool checkValue)
 {
+  (void)checkValue;
   const unsigned long count = ReferencedSegmentNumber.getVM();
   return ReferencedSegmentNumber.putUint16(value, count /* starts with 0, so add new value at the end */);
 
@@ -1090,10 +1092,8 @@ OFCondition AlgorithmIdentificationMacro::setAlgorithmVersion(const OFString& va
 OFCondition AlgorithmIdentificationMacro::setAlgorithmParameters(const OFString& value,
                                                                  const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmLongText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_AlgorithmParameters.putOFStringArray(value);
-  return result;
+  (void)checkValue;
+  return m_AlgorithmParameters.putOFStringArray(value);
 }
 
 
@@ -1277,6 +1277,7 @@ void ContentIdentificationMacro::clearData()
 
 OFCondition ContentIdentificationMacro::check(const OFBool quiet)
 {
+  (void)quiet;
   OFCondition result;
   OFBool failure = m_ContentLabel.isEmpty() || m_InstanceNumber.isEmpty();
   if (!failure)
@@ -1352,7 +1353,16 @@ OFVector<ContentIdentificationMacro::AlternateContentDescriptionItem*>& ContentI
 OFCondition ContentIdentificationMacro::setInstanceNumber(const OFString& value,
                                                           const OFBool checkValue)
 {
-  return m_InstanceNumber.putOFStringArray(value);
+  OFCondition result;
+  if (checkValue)
+  {
+    result = (checkValue) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+  }
+  if (result.good())
+  {
+    result = m_InstanceNumber.putOFStringArray(value);
+  }
+  return result;
 }
 
 
@@ -1604,20 +1614,16 @@ void HL7HierarchicDesignatorMacro::resetRules()
 OFCondition HL7HierarchicDesignatorMacro::setLocalNamespaceEntityID(const OFString& value,
                                                                     const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmUnlimitedText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_LocalNamespaceEntityID,value);
-  return result;
+  (void)checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_LocalNamespaceEntityID,value);
 }
 
 
 OFCondition HL7HierarchicDesignatorMacro::setUniversalEntityID(const OFString& value,
                                                                const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmUnlimitedText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_UniversalEntityID,value);
-  return result;
+  (void) checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_UniversalEntityID,value);
 }
 
 
index b4224958c34c39c8f6cd80c5a6ed963b63083411..721334f4e8a478b8be4f3d725824f5f368d6a6f2 100644 (file)
@@ -546,7 +546,7 @@ OFCondition DcmIODUtil::decompress(DcmDataset& dset)
   {
     if (EC_Normal != dset.chooseRepresentation(EXS_LittleEndianExplicit, NULL))
     {
-      DCMIOD_ERROR("No conversion uncompressed transfer syntax possible!");
+      DCMIOD_ERROR("No conversion to uncompressed transfer syntax possible!");
       return IOD_EC_CannotDecompress;
     }
   }
index 980ac0ee2e5751ecb1ee662dc97655a2f5f6b2ea..ac77db0d6845f9365dca5987b24b8a99f7c95e73 100644 (file)
@@ -405,7 +405,16 @@ OFCondition IODEnhUSImageModule::setImageType(const DcmIODTypes::IOD_ENHUSIMAGET
   value += "\\";
   value += derivedPixelContrast;
 
-  return m_Item->putAndInsertOFStringArray(DCM_ImageType, value);
+  OFCondition result;
+  if (checkValue)
+  {
+    result = DcmCodeString::checkStringValue(value, "2");
+  }
+  if (result.good())
+  {
+    result = m_Item->putAndInsertOFStringArray(DCM_ImageType, value);
+  }
+  return result;
 }
 
 
@@ -534,7 +543,6 @@ OFCondition IODEnhUSImageModule::setLossyImageCompression(const OFString& value,
 
 
 OFCondition IODEnhUSImageModule::setLossyImageCompressionMethod(const OFString& value,
-                                                                const unsigned long pos,
                                                                 const OFBool checkValue)
 {
   OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal;
@@ -596,7 +604,8 @@ OFCondition IODEnhUSImageModule::setBoneThermalIndex(const OFString& value,
 }
 
 
-OFCondition IODEnhUSImageModule::setCranialThermalIndex(const OFString& value, const bool checkValue)
+OFCondition IODEnhUSImageModule::setCranialThermalIndex(const OFString& value,
+                                                        const bool checkValue)
 {
   OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
   if (result.good())
@@ -605,7 +614,8 @@ OFCondition IODEnhUSImageModule::setCranialThermalIndex(const OFString& value, c
 }
 
 
-OFCondition IODEnhUSImageModule::setSoftTissueThermalIndex(const OFString& value, const bool checkValue)
+OFCondition IODEnhUSImageModule::setSoftTissueThermalIndex(const OFString& value,
+                                                           const bool checkValue)
 {
   OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
   if (result.good())
@@ -614,14 +624,19 @@ OFCondition IODEnhUSImageModule::setSoftTissueThermalIndex(const OFString& value
 }
 
 
-OFCondition IODEnhUSImageModule::setDepthsOfFocus(const Float64 value, const long unsigned int pos, const bool checkValue)
+OFCondition IODEnhUSImageModule::setDepthsOfFocus(const Float64 value,
+                                                  const long unsigned int pos,
+                                                  const bool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertFloat64(DCM_DepthsOfFocus, value, pos);
 }
 
 
-OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& values, const bool checkValue)
+OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& values,
+                                                  const bool checkValue)
 {
+  (void)checkValue;
   DcmElement* elem = newDicomElement(DCM_DepthsOfFocus);
   if (!elem)
     return EC_MemoryExhausted;
@@ -645,7 +660,8 @@ OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& val
 }
 
 
-OFCondition IODEnhUSImageModule::setDepthsOfScanField(const OFString& value, const bool checkValue)
+OFCondition IODEnhUSImageModule::setDepthsOfScanField(const OFString& value,
+                                                      const bool checkValue)
 {
   OFCondition result = (checkValue) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
   if (result.good())
index fbce1ed2d0dfee9373df8eaba1dc351531794373..ea9726f23589984f5a6bd43248475073d1f890b1 100644 (file)
@@ -93,8 +93,7 @@ IODEnhancedUSSeriesModule::~IODEnhancedUSSeriesModule()
 OFCondition IODEnhancedUSSeriesModule::getModality(OFString &value,
                                                    const signed long pos) const
 {
-  value = "US";
-  return EC_Normal;
+  return DcmIODUtil::getStringValueFromItem(DCM_Modality, *m_Item, value, pos);
 }
 
 
index 675ccbf48b7118fa39d4585a57974e5ee7608059..10f1cde9224b9a23b2010364c9281be1150e47a7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -160,10 +160,8 @@ OFCondition IODGeneralEquipmentModule::setInstitutionName(const OFString& value,
 OFCondition IODGeneralEquipmentModule::setInstitutionAddress(const OFString& value,
                                                              const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmShortText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_InstitutionAddress, value);
-  return result;
+  (void)checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_InstitutionAddress, value);
 }
 
 
index e724b01e23a7da03871932fdd7b3ac1071d57b4c..c12bfb571cafeb12ed8d08cc6e4d800d28872c34 100644 (file)
@@ -299,10 +299,8 @@ OFCondition IODGeneralImageModule::setAcquisitionDateTime(const OFString &value,
 OFCondition IODGeneralImageModule::setImageComments(const OFString &value,
                                                     const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmLongText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_ImageComments, value);
-  return result;
+  (void)checkValue;
+  return  m_Item->putAndInsertOFStringArray(DCM_ImageComments, value);
 }
 
 
index 5602b04b13e82619db32eba873a26f5b1b7cab6d..3577fc903b18e9fb220a42b989821eb97c7a89ac 100644 (file)
@@ -82,6 +82,31 @@ void IODGeneralSeriesModule::resetRules()
   m_Rules->addRule(new IODRule(DCM_OperatorsName, "1-n","3", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
   m_Rules->addRule(new IODRule(DCM_BodyPartExamined, "1","3", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
   m_Rules->addRule(new IODRule(DCM_PatientPosition, "1","2C", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ReferencedPerformedProcedureStepSequence, "1","3", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
+}
+
+
+OFCondition IODGeneralSeriesModule::read(DcmItem& source,
+                                         const OFBool clearOldData)
+{
+  if (clearOldData)
+    clearData();
+
+  IODComponent::read(source, OFFalse /* data already cleared */);
+  DcmIODUtil::readSingleItem<SOPInstanceReferenceMacro>(source, DCM_ReferencedPerformedProcedureStepSequence, m_ReferencedPPS, m_Rules->getByTag(DCM_ReferencedPerformedProcedureStepSequence));
+
+  return EC_Normal;
+}
+
+
+OFCondition IODGeneralSeriesModule::write(DcmItem& destination)
+{
+  OFCondition result = EC_Normal;
+
+  result = IODComponent::write(destination);
+  DcmIODUtil::writeSingleItem<SOPInstanceReferenceMacro>(result, DCM_ReferencedPerformedProcedureStepSequence, m_ReferencedPPS, destination, m_Rules->getByTag(DCM_ReferencedPerformedProcedureStepSequence));
+
+  return result;
 }
 
 
@@ -193,6 +218,12 @@ OFCondition IODGeneralSeriesModule::getPatientPosition(OFString &value,
 }
 
 
+SOPInstanceReferenceMacro& IODGeneralSeriesModule::getReferencedPPS()
+{
+  return m_ReferencedPPS;
+}
+
+
 OFCondition IODGeneralSeriesModule::setModality(const OFString &value,
                                                 const OFBool checkValue)
 {
@@ -226,6 +257,7 @@ OFCondition IODGeneralSeriesModule::setSeriesNumber(const OFString &value,
 OFCondition IODGeneralSeriesModule::setLaterality(const DcmIODTypes::IOD_LATERALITY laterality,
                                                   const OFBool checkValue)
 {
+  (void)checkValue;
   OFCondition result;
   switch(laterality)
   {
index e7fb2ca7b6f5e30bb495082d620a7a425ca9ec8d..8c934eeb9d85c6112d78740b7da91602dd7733e4 100644 (file)
@@ -201,6 +201,7 @@ OFCondition IODImagePixelModule::setPhotometricInterpretation(const OFString& va
 OFCondition IODImagePixelModule::setRows(const Uint16 value,
                                          const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_Rows, value);
 }
 
@@ -208,6 +209,7 @@ OFCondition IODImagePixelModule::setRows(const Uint16 value,
 OFCondition IODImagePixelModule::setColumns(const Uint16 value,
                                             const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_Columns, value);
 }
 
@@ -215,6 +217,7 @@ OFCondition IODImagePixelModule::setColumns(const Uint16 value,
 OFCondition IODImagePixelModule::setBitsAllocated(const Uint16 value,
                                                   const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_BitsAllocated, value);
 }
 
@@ -222,7 +225,7 @@ OFCondition IODImagePixelModule::setBitsAllocated(const Uint16 value,
 OFCondition IODImagePixelModule::setBitsStored(const Uint16 value,
                                                const OFBool checkValue)
 {
-  // TODO: check consistency between bits allocated, bits stored and high bit if possible
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_BitsStored, value);
 }
 
@@ -230,7 +233,7 @@ OFCondition IODImagePixelModule::setBitsStored(const Uint16 value,
 OFCondition IODImagePixelModule::setHighBit(const Uint16 value,
                                             const OFBool checkValue)
 {
-  // TODO: check consistency between bits allocated, bits stored and high bit if possible
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_HighBit, value);
 }
 
index 6dd6e755e7b0cd47879adc562ae2350ce389db67..d92f4f235122f68e7cd0a15fe8b0c875201d6016 100644 (file)
@@ -495,8 +495,9 @@ OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setDimensionDescri
 
 
 OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setFunctionalGroupPointer(const DcmTagKey& value,
-                                                                                               const OFBool checkValue)
+                                                                                        const OFBool checkValue)
 {
+  (void)checkValue;
   if (value == DCM_UndefinedTagKey)
     return EC_IllegalParameter;
 
@@ -526,8 +527,9 @@ OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setFunctionalGroup
 
 
 OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setDimensionIndexPointer(const DcmTagKey& value,
-                                                                                              const OFBool checkValue)
+                                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   if (value == DCM_UndefinedTagKey)
     return EC_IllegalParameter;
 
index 60a5ab94e9147aad075013be10a750ef993d0355..9345a7635ff8dd0c81af5eb14138513cb623df6e 100644 (file)
@@ -173,6 +173,7 @@ OFCondition IODSynchronizationModule::setTriggerSourceOrType(const OFString &val
 OFCondition IODSynchronizationModule::setSynchronizationChannel(const OFPair<Uint16, Uint16> &value,
                                                                 const OFBool checkValue)
 {
+  (void)checkValue;
   OFCondition result = m_Item->putAndInsertUint16(DCM_SynchronizationChannel, value.first, 0);
   if (result.good())
   {
diff --git a/dcmiod/tests/CMakeLists.txt b/dcmiod/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..3a04022
--- /dev/null
@@ -0,0 +1,8 @@
+# declare executables
+DCMTK_ADD_EXECUTABLE(dcmiod_tests tests tcielabutil)
+
+# make sure executables are linked to the corresponding libraries
+DCMTK_TARGET_LINK_MODULES(dcmiod_tests dcmiod dcmdata oflog ofstd)
+
+# This macro parses tests.cc and registers all tests
+DCMTK_ADD_TESTS(dcmiod)
diff --git a/dcmiod/tests/Makefile.dep b/dcmiod/tests/Makefile.dep
new file mode 100644 (file)
index 0000000..7ef8406
--- /dev/null
@@ -0,0 +1,90 @@
+tcielabutil.o: tcielabutil.cc \
+ ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../include/dcmtk/dcmiod/cielabutil.h ../include/dcmtk/dcmiod/ioddef.h
+tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h
index fd8adcef12c31e2063229c6f2b612a2137646e16..9aab2c895ac18af927dd923993045c01c87e50ae 100644 (file)
@@ -5,25 +5,55 @@
 @SET_MAKE@
 
 SHELL = /bin/sh
+VPATH = @srcdir@:@top_srcdir@/include:@top_srcdir@/@configdir@/include
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 configdir = @top_srcdir@/@configdir@
 
 include $(configdir)/@common_makefile@
 
+ofstddir = $(top_srcdir)/../ofstd
+oflogdir = $(top_srcdir)/../oflog
+dcmdatadir = $(top_srcdir)/../dcmdata
+dcmioddir = $(top_srcdir)/../dcmiod
 
-all:
+LOCALINCLUDES = -I$(dcmioddir)/include -I$(dcmdatadir)/include -I$(oflogdir)/include -I$(ofstddir)/include
+LIBDIRS = -L$(top_srcdir)/libsrc -L$(dcmioddir)/libsrc -L$(dcmdatadir)/libsrc \
+       -L$(oflogdir)/libsrc -L$(ofstddir)/libsrc
+LOCALLIBS = -ldcmiod -ldcmdata -loflog -lofstd \
+       $(TIFFLIBS) $(PNGLIBS) $(ZLIBLIBS) $(ICONVLIBS)
 
-check:
+test_objs = tests.o tcielabutil.o
+objs = tests.o $(test_objs)
+progs = tests
 
-check-exhaustive:
 
-install:
+all: $(progs)
+
+tclabutil: tclabutil.o
+       $(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $@.o $(LOCALLIBS) $(MATHLIBS) $(LIBS)
+
+tests: $(test_objs)
+       $(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
+
+install: all
+
+
+check: tests
+       ./tests
+
+check-exhaustive: tests
+       ./tests -x
+
 
 clean:
-       rm -f $(TRASH)
+       rm -f $(objs) $(progs) $(TRASH)
 
 distclean:
-       rm -f $(DISTTRASH)
+       rm -f $(objs) $(progs) $(DISTTRASH)
+
 
 dependencies:
+       $(CXX) -MM $(defines) $(includes) $(CPPFLAGS) $(CXXFLAGS) *.cc  > $(DEP)
+
+include $(DEP)
diff --git a/dcmiod/tests/tcielabutil.cc b/dcmiod/tests/tcielabutil.cc
new file mode 100644 (file)
index 0000000..87f98ca
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmseg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: Tests for dcmiod's color conversion functionalities
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmiod/cielabutil.h"
+#define INCLUDE_CSTDLIB               // for srand()
+#define INCLUDE_CTIME                 // for time() initialization of srand()
+#include "dcmtk/ofstd/ofstdinc.h"
+
+OFTEST(dcmiod_tcielabutil)
+{
+  // Result variables for testing
+  double r1, r2, r3;
+  r1=r2=r3 = 0.0;
+
+  // Test RGB -> CIELab conversion with medium values
+  IODCIELabUtil::rgb2Lab(r1, r2, r3 /* L,a,b */, 0.5, 0.5, 0.5);
+  OFCHECK( fabs(53.388 - r1) < 0.001 );
+  OFCHECK( fabs(0.006 - r2) < 0.001 );
+  OFCHECK( fabs(-0.010 - r3) < 0.001 );
+
+  // Test RGB -> CIEXYZ conversion with medium values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::rgb2Xyz(r1, r2, r3 /* X,Y,Z */, 0.5, 0.5, 0.5);
+  OFCHECK( fabs(0.203 - r1) < 0.001 );
+  OFCHECK( fabs(0.214 - r2) < 0.001 );
+  OFCHECK( fabs(0.233 - r3) < 0.001 );
+
+  // Test RGB -> CIELab conversion with minimum value
+  r1=r2=r3 = 0;
+  IODCIELabUtil::rgb2Lab(r1, r2, r3 /* L,a,b */, 0, 0, 0);
+  OFCHECK( fabs(0 - r1) < 0.001 );
+  OFCHECK( fabs(0 - r2) < 0.001 );
+  OFCHECK( fabs(0 - r3) < 0.001 );
+
+  // Test RGB -> XYZ conversion with minimum values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::rgb2Xyz(r1, r2, r3 /* X,Y,Z */, 0, 0, 0);
+  OFCHECK( fabs(0 - r1) < 0.001 );
+  OFCHECK( fabs(0 - r2) < 0.001 );
+  OFCHECK( fabs(0 - r3) < 0.001 );
+
+  // Test DICOM CIELab to "normalized" CIELab conversion with maximum values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::dicomlab2Lab(r1, r2, r3, 65535, 65535, 65535 );
+  OFCHECK( fabs(100 - r1) < 0.001 );
+  OFCHECK( fabs(127 - r2) < 0.001 );
+  OFCHECK( fabs(127 - r3) < 0.001 );
+
+  // Test DICOM CIELab to "normalized" CIELab conversion with minimum values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::dicomlab2Lab(r1, r2, r3, 0, 0, 0 );
+  OFCHECK( fabs(0 - r1) < 0.001 );
+  OFCHECK( fabs(-128 - r2) < 0.001 );
+  OFCHECK( fabs(-128 - r3) < 0.001 );
+
+  // Convert between colorspaces back and forth and check whether deviation after
+  // roundtrip is less than around 1 promille
+
+  // Initialize random numbers
+  srand (OFstatic_cast(unsigned int, time (NULL)));
+
+  // We do 1000 runs
+  for (size_t run = 0; run < 1000; run++)
+  {
+    // i1, i2, i3: Input for conversion
+    // r1, r2, r3: Results of conversion
+    // o1, o2, o3: Output of inverse conversion (should equal i1, i2, i3)
+    double i1, i2, i3, o1, o2, o3;
+    i1 = i2 = i3 = r1 = r2 = r3 = o1 = o2 = o3 = 0.0;
+
+    // Roundtrip RGB -> CIELab -> RGB
+    i1 = (double)rand() / (double)RAND_MAX;
+    i2 = (double)rand() / (double)RAND_MAX;
+    i3 = (double)rand() / (double)RAND_MAX;
+    IODCIELabUtil::rgb2Lab(r1, r2, r3, i1, i2, i3);
+    IODCIELabUtil::lab2Rgb(o1, o2, o3, r1, r2, r3);
+    OFCHECK( fabs(i1 - o1) < 0.001 );
+    OFCHECK( fabs(i2 - o2) < 0.001 );
+    OFCHECK( fabs(i3 - o3) < 0.001 );
+
+    // Roundtrip CIELab -> DICOM CIELab -> CIELab
+    i1 = i2 = i3 = r1 = r2 = r3 = o1 = o2 = o3 = 0.0;
+    i1 = ((double)rand() / ((double)RAND_MAX)) * 100.0;
+    i2 = ((double)rand() / ((double)RAND_MAX)) * 255.0 - 128;
+    i3 = ((double)rand() / ((double)RAND_MAX)) * 255.0 - 128;
+    IODCIELabUtil::lab2DicomLab(r1, r2, r3, i1, i2, i3);
+    IODCIELabUtil::dicomlab2Lab(o1, o2, o3, r1, r2, r3);
+    OFCHECK( fabs(i1 - o1) < 0.001 );
+    OFCHECK( fabs(i2 - o2) < 0.001 );
+    OFCHECK( fabs(i3 - o3) < 0.001 );
+
+    // Roundtrip RGB -> CIEXYZ -> CIELab -> dicomCIELab -> RGB
+    i1 = i2 = i3 = r1 = r2 = r3 = o1 = o2 = o3 = 0.0;
+    i1 = ((double)rand() / ((double)RAND_MAX));
+    i2 = ((double)rand() / ((double)RAND_MAX));
+    i3 = ((double)rand() / ((double)RAND_MAX));
+    IODCIELabUtil::rgb2Xyz(r1, r2, r3, i1, i2, i3);
+    IODCIELabUtil::xyz2Lab(o1, o2, o3, r1, r2, r3);
+    IODCIELabUtil::lab2DicomLab(r1, r2, r3, o1, o2, o3);
+    IODCIELabUtil::dicomLab2RGB(o1, o2, o3, r1, r2, r3);
+
+    OFCHECK( fabs(i1 - o1) < 0.001 );
+    OFCHECK( fabs(i2 - o2) < 0.001 );
+    OFCHECK( fabs(i3 - o3) < 0.001 );
+
+  }
+}
diff --git a/dcmiod/tests/tests.cc b/dcmiod/tests/tests.cc
new file mode 100644 (file)
index 0000000..3f583bf
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *
+ *  Copyright (C) 2016, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmiod
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: main test program
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/oftest.h"
+
+OFTEST_REGISTER(dcmiod_tcielabutil);
+OFTEST_MAIN("dcmiod")
index fde9a8481a7f7dc7d93449a96fb9ecb93573819e..be75e57e51a8f989ce4a871fd9a6a98451c42b4e 100644 (file)
@@ -39,6 +39,8 @@ dcmcjpeg.o: dcmcjpeg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcmcjpeg.o: dcmcjpeg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmjpeg/djdecode.h ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -159,6 +162,8 @@ dcmdjpeg.o: dcmdjpeg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -227,6 +232,7 @@ dcmdjpeg.o: dcmdjpeg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmjpeg/djdecode.h ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -275,6 +281,8 @@ dcmj2pnm.o: dcmj2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -343,6 +351,7 @@ dcmj2pnm.o: dcmj2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcrledrg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
@@ -416,6 +425,8 @@ dcmmkdir.o: dcmmkdir.cc ../../dcmdata/apps/dcmgpdir.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -484,6 +495,7 @@ dcmmkdir.o: dcmmkdir.cc ../../dcmdata/apps/dcmgpdir.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcddirif.h \
  ../../dcmimage/include/dcmtk/dcmimage/diregist.h \
index 60bd2998cb50b7408aa69cf3af2239de839a1117..0109ba23734e80f1092d0fc4c19dee3ff1ea2c4f 100644 (file)
@@ -32,6 +32,12 @@ Currently the following profiles are supported (others might be added later):
     (STD-GEN-BD-MPEG4-HPLV41)
 \li General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible
     HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
+\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D
+    video (STD-GEN-BD-MPEG4-HPLV42-2D)
+\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D
+    video (STD-GEN-BD-MPEG4-HPLV42-3D)
+\li General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2
+    (STD-GEN-BD-MPEG4-SHPLV42)
 \li General Purpose USB and Flash Memory Interchange with JPEG
     (STD-GEN-USB/MMC/CF/SD-JPEG)
 \li General Purpose USB and Flash Memory Interchange with JPEG 2000
@@ -243,6 +249,18 @@ profiles:
           General Purpose BD Interchange with MPEG-4 AVC/H.264
           BD-Compatible HiP@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
 
+        --general-bd-mpeg4-hp2d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP@Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+
+        --general-bd-mpeg4-hp3d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP@Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+
+        --general-bd-mpeg4-hpst
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          Stereo HiP@Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
+
   -Pfl  --usb-and-flash-jpeg
           General Purpose USB/Flash Memory Interchange with JPEG
           (STD-GEN-USB/MMC/CF/SD-JPEG)
@@ -459,6 +477,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2001-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index a6e247d72dc8c0651cdb24e4210df307756166cd..6350cbaaabdbc68c6791bc59ba65c1c18ebce9ce 100644 (file)
@@ -19,6 +19,8 @@ ddpiimpl.o: ddpiimpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -126,6 +128,8 @@ dipijpeg.o: dipijpeg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -195,6 +199,8 @@ djcodecd.o: djcodecd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -265,6 +271,8 @@ djcodece.o: djcodece.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -359,6 +367,8 @@ djcparam.o: djcparam.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -409,6 +419,8 @@ djdecbas.o: djdecbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -470,6 +482,8 @@ djdecext.o: djdecext.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -532,6 +546,8 @@ djdeclol.o: djdeclol.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -594,6 +610,8 @@ djdecode.o: djdecode.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmjpeg/djdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dccodec.h \
@@ -648,6 +666,8 @@ djdecpro.o: djdecpro.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -710,6 +730,8 @@ djdecsps.o: djdecsps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -772,6 +794,8 @@ djdecsv1.o: djdecsv1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -833,6 +857,8 @@ djdijg12.o: djdijg12.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -886,6 +912,8 @@ djdijg16.o: djdijg16.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -939,6 +967,8 @@ djdijg8.o: djdijg8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -993,6 +1023,8 @@ djeijg12.o: djeijg12.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
@@ -1048,6 +1080,8 @@ djeijg16.o: djeijg16.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
@@ -1103,6 +1137,8 @@ djeijg8.o: djeijg8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
@@ -1158,6 +1194,8 @@ djencbas.o: djencbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1219,6 +1257,8 @@ djencext.o: djencext.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1281,6 +1321,8 @@ djenclol.o: djenclol.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1343,6 +1385,8 @@ djencode.o: djencode.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmjpeg/djdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1397,6 +1441,8 @@ djencpro.o: djencpro.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1459,6 +1505,8 @@ djencsps.o: djencsps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1521,6 +1569,8 @@ djencsv1.o: djencsv1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1591,6 +1641,8 @@ djrplol.o: djrplol.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1646,6 +1698,8 @@ djrploss.o: djrploss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1692,6 +1746,8 @@ djutils.o: djutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmjpeg/djdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
index 8b0228e75a9fd3dc64c5dba3bbb06dc245e177d3..28bdffb63d98cd7bf502fb8bf9d09f0fd81b1256 100644 (file)
@@ -39,6 +39,8 @@ dcmcjpls.o: dcmcjpls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcmcjpls.o: dcmcjpls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmimage/include/dcmtk/dcmimage/diregist.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diregbas.h \
@@ -158,6 +161,8 @@ dcmdjpls.o: dcmdjpls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -226,6 +231,7 @@ dcmdjpls.o: dcmdjpls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmimage/include/dcmtk/dcmimage/diregist.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diregbas.h \
@@ -276,6 +282,8 @@ dcml2pnm.o: dcml2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -344,6 +352,7 @@ dcml2pnm.o: dcml2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcrledrg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
index 09b842d6c6d76e29759cd0c6028f74a1ab99e2e1..e9e67ba4f00aa7d47e9b927c2d756036bb2f09ba 100644 (file)
@@ -22,7 +22,9 @@ intrface.o: intrface.cc config.h util.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h header.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h header.h \
  ../../ofstd/include/dcmtk/ofstd/ofaptr.h streams.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
index 15f839ff8cb107154b914cc251e5b887d2ff8e6e..11c3879b8817ff5b0548f5547d5282caa950dbc3 100644 (file)
@@ -226,6 +226,7 @@ JLSInputStream::JLSInputStream(const BYTE* pdata, size_t cbyteLength) :
                _rect()
 {
        ::memset(&_info, 0, sizeof(_info));
+       ::memset(&_rect, 0, sizeof(_rect));
 }
 
 //
index 74e6ae3bbda35a0d2b49b8fc0c4b491bcc3add3f..db2371928a7cdfe38f7785a953420a4dca2df941 100644 (file)
@@ -40,6 +40,8 @@ djcodecd.o: djcodecd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -109,6 +111,8 @@ djcodece.o: djcodece.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -207,6 +211,8 @@ djcparam.o: djcparam.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -253,6 +259,8 @@ djdecode.o: djdecode.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmjpls/dldefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dccodec.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -302,6 +310,8 @@ djencode.o: djencode.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmjpls/dldefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -362,6 +372,8 @@ djrparam.o: djrparam.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -407,6 +419,8 @@ djutils.o: djutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmjpls/dldefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
index e5cdec24f0b88ce5c2b8a05c57e1ec0dda322b30..d18e931289c73385ae1919671780e9508b86780e 100644 (file)
@@ -10,6 +10,8 @@ dcmrecv.o: dcmrecv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -110,6 +112,7 @@ dcmrecv.o: dcmrecv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
  ../include/dcmtk/dcmnet/dcompat.h \
@@ -121,7 +124,7 @@ dcmrecv.o: dcmrecv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmnet/dccfuidh.h ../include/dcmtk/dcmnet/dccfpcmp.h \
  ../include/dcmtk/dcmnet/dccfrsmp.h ../include/dcmtk/dcmnet/dccfenmp.h \
  ../include/dcmtk/dcmnet/dccfprmp.h \
- ../../ofstd/include/dcmtk/ofstd/ofmem.h
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/diutil.h
 dcmsend.o: dcmsend.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -134,6 +137,8 @@ dcmsend.o: dcmsend.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -234,6 +239,7 @@ dcmsend.o: dcmsend.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
  ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dimse.h \
@@ -302,6 +308,8 @@ echoscu.o: echoscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -370,6 +378,8 @@ findscu.o: findscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -416,7 +426,9 @@ getscu.o: getscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h ../include/dcmtk/dcmnet/scu.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/dcmnet/scu.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -509,6 +521,7 @@ getscu.o: getscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -535,6 +548,8 @@ movescu.o: movescu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -607,6 +622,8 @@ storescp.o: storescp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -692,6 +709,8 @@ storescu.o: storescu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -778,6 +797,8 @@ termscu.o: termscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
index e86bad444dad055cf6d0cbe1f0719bad7a9b6558..6c514be46d0764c30174feabc4c303f5ed7d5be9 100644 (file)
@@ -1289,6 +1289,10 @@ storeSCPCallback(
          /* create full path name for the output file */
          OFString ofname;
          OFStandard::combineDirAndFilename(ofname, opt_outputDirectory, cbdata->imageFileName, OFTrue /* allowEmptyDirName */);
+         if (OFStandard::fileExists(ofname))
+         {
+           OFLOG_WARN(movescuLogger, "DICOM file already exists, overwriting: " << ofname);
+         }
 
          E_TransferSyntax xfer = opt_writeTransferSyntax;
          if (xfer == EXS_Unknown) xfer = (*imageDataSet)->getOriginalXfer();
index 8b705e43e74c7e768f2c544ca84124dfeda9906f..72c3fbce76e7b03629038e90e7b9e5f9a40186d3 100644 (file)
@@ -604,6 +604,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -652,6 +653,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
@@ -676,6 +678,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
+RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
 GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
 ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
 ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
@@ -837,6 +840,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1996-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index a2514233015876d2dca631c8318af1b60234ff00..24db9157eb7c11b1a541c2caf73f4dfea7d3181f 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2015, OFFIS e.V.
+#  Copyright (C) 2003-2016, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
@@ -201,6 +201,7 @@ PresentationContext128 = DRAFT_WaveformStorage\UncompressedOrZlib
 #
 # the following SOP classes are missing in the above list:
 #
+# - AcquisitionContextSRStorage
 # - BreastProjectionXRayImageStorageForPresentation
 # - BreastProjectionXRayImageStorageForProcessing
 # - CompositingPlanarMPRVolumetricPresentationStateStorage
@@ -211,6 +212,8 @@ PresentationContext128 = DRAFT_WaveformStorage\UncompressedOrZlib
 # - LegacyConvertedEnhancedPETImageStorage
 # - ParametricMapStorage
 # - RadiopharmaceuticalRadiationDoseSRStorage
+# - RTBrachyApplicationSetupDeliveryInstructionStorage
+# - TractographyResultsStorage
 # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
 # - WideFieldOphthalmicPhotography3DCoordinatesImageStorage
 #
index 47605be66e6147e0a165c381aff1a0559d6a94c0..4d3f6d6e3576f4ac43336a2d8852b9e516d77149 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2015, OFFIS e.V.
+#  Copyright (C) 2003-2016, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
@@ -199,6 +199,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 #
 # the following SOP classes are missing in the above list:
 #
+# - AcquisitionContextSRStorage
 # - ArterialPulseWaveformStorage
 # - AutorefractionMeasurementsStorage
 # - BasicStructuredDisplayStorage
@@ -239,6 +240,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - RealWorldValueMappingStorage
 # - RespiratoryWaveformStorage
 # - RTBeamsDeliveryInstructionStorage
+# - RTBrachyApplicationSetupDeliveryInstructionStorage
 # - RTIonBeamsTreatmentRecordStorage
 # - RTIonPlanStorage
 # - SegmentationStorage
@@ -247,6 +249,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - SurfaceScanMeshStorage
 # - SurfaceScanPointCloudStorage
 # - SurfaceSegmentationStorage
+# - TractographyResultsStorage
 # - VisualAcuityMeasurementsStorage
 # - VLWholeSlideMicroscopyImageStorage
 # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
index d89c13ab35177eea4d5578f3eadf4cba6b80fce3..22c4e168f73c2cfd34874c8e2a14c53a4fa3d143 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -15,7 +15,7 @@
  *
  *  Author:  Marco Eichelberg
  *
- *  Purpose: 
+ *  Purpose:
  *    class DcmTransferSyntaxMap
  *
  */
@@ -63,12 +63,6 @@ public:
    */
   OFMap<OFString, DcmTransferSyntaxList*>::const_iterator end();
 
-  /** get transfer syntax list denoted by given key
-   *  @param ts the name of the transfer syntax list
-   *  @param the transfer syntax list
-   */
-  const DcmTransferSyntaxList* getTSList(const OFString& ts);
-
   /** Resets DcmTransferSyntaxMap and frees any allocated memory
    */
   void clear();
@@ -85,9 +79,7 @@ public:
    *  @param transferSyntaxUID transfer syntax UID
    *  @return EC_Normal if successful, an error code otherwise
    */
-  OFCondition add(
-    const char *key,
-    const char *transferSyntaxUID);
+  OFCondition add(const char *key, const char *transferSyntaxUID);
 
   /** checks if the key is known
    *  @param key key name, must not be NULL
index 4b32d463acb5dc118e717e6ba691ac67f135255a..101affe95802e8662004892c942d179ab58f8e9b 100644 (file)
@@ -132,4 +132,16 @@ DCMTK_DCMNET_EXPORT const char *DU_nactionStatusString(Uint16 statusCode);
 DCMTK_DCMNET_EXPORT const char *DU_ndeleteStatusString(Uint16 statusCode);
 DCMTK_DCMNET_EXPORT const char *DU_neventReportStatusString(Uint16 statusCode);
 
+/** Logs result of a select() call. According to the select() documentation,
+ *  a value of > 1 means that data has arrived. This is logged on TRACE level
+ *  since it should be a very regular case. If select() returns 0, a timeout
+ *  has occured, and in case of -1 another error happened (e.g. interrupt).
+ *  These two events are logged to DEBUG log level.
+ *  Note that this function makes use of errno (Unix) or WSAGetLastError()
+ *  (Windows aka Winsock), so it must be called right after the select() call
+ *  since otherwise the error might be already cleared or modified.
+ *  @param  selectReturnValue The return value returned by select()
+ */
+DCMTK_DCMNET_EXPORT void DU_logSelectResult(int selectReturnValue);
+
 #endif
index 73f62c87c93e49bbfac891e52600184cb35ec04b..d6510533411e110c9b594b77355cb5aa4afd38fa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, OFFIS e.V.
+ *  Copyright (C) 2011-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -265,7 +265,7 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *                       conformance.  If OFFalse, only empty values are rejected.
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition addDicomFile(const OFString &filename,
+    OFCondition addDicomFile(const OFFilename &filename,
                              const E_FileReadMode readMode = ERM_fileOnly,
                              const OFBool checkValues = OFTrue);
 
@@ -371,7 +371,7 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
          *  @param  transferSyntaxUID  Transfer Syntax UID of the SOP instance to be
          *                             transferred
          */
-        TransferEntry(const OFString &filename,
+        TransferEntry(const OFFilename &filename,
                       const E_FileReadMode readMode,
                       const OFString &sopClassUID,
                       const OFString &sopInstanceUID,
@@ -398,7 +398,7 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
         ~TransferEntry();
 
         /// filename of the SOP instance to be transferred (if no 'Dataset' given)
-        const OFString Filename;
+        const OFFilename Filename;
         /// read mode that should be used to read the given SOP instance from file
         const E_FileReadMode FileReadMode;
         /// dataset of the SOP instance to be transferred (if no 'Filename' given)
@@ -450,12 +450,10 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *                       only empty values are rejected.
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition addDicomFilesFromDICOMDIR(const OFString &filename,
+    OFCondition addDicomFilesFromDICOMDIR(const OFFilename &filename,
                                           const E_FileReadMode readMode,
                                           const OFBool checkValues);
 
-    // --- static methods ---
-
     /** check given SOP Class UID, SOP Instance UID and Transfer Syntax UID for validity and
      *  conformance to the DICOM standard.  For all UID values, the compliance with the
      *  requirements of the value representation "Unique Identifier" (UI) and value
@@ -464,6 +462,8 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *  For the Transfer Syntax UID, it is checked whether it is known and generally
      *  supported.  Further checks will be performed when the list of presentation contexts is
      *  created for the association negotiation.
+     *  This method is called for each SOP instance that is added to the transfer list by one
+     *  of the following methods: addDicomFile(), addDataset(), addDicomFilesFromDICOMDIR()
      *  @param  sopClassUID        value of the SOP Class UID to be checked
      *  @param  sopInstanceUID     value of the SOP Instance UID to be checked
      *  @param  transferSyntaxUID  value of the Transfer Syntax UID to be checked
@@ -472,10 +472,10 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *                             are rejected.
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    static OFCondition checkSOPInstance(const OFString &sopClassUID,
-                                        const OFString &sopInstanceUID,
-                                        const OFString &transferSyntaxUID,
-                                        const OFBool checkValues);
+    virtual OFCondition checkSOPInstance(const OFString &sopClassUID,
+                                         const OFString &sopInstanceUID,
+                                         const OFString &transferSyntaxUID,
+                                         const OFBool checkValues);
 
     /** This method is called each time a SOP instance is sent to a peer.  Since it is called
      *  after the SOP instance has been processed, the transfer entry passed to this method
index 24f93e474636874809b225b5f69bb29660f31037..dfe0c0bf18764e90f4c83c595d6f398bca0825d4 100644 (file)
@@ -30,6 +30,7 @@
 #include "dcmtk/dcmnet/assoc.h"
 #include "dcmtk/dcmnet/dimse.h"     /* DIMSE network layer */
 #include "dcmtk/dcmnet/scpcfg.h"
+#include "dcmtk/dcmnet/diutil.h"    /* for DCMNET_WARN() */
 
 #ifdef WITH_ZLIB
 #include <zlib.h>     /* for zlibVersion() */
@@ -653,9 +654,26 @@ protected:
    *  @param reqDataset [out] Pointer to the dataset received
    *  @return status, EC_Normal if successful, an error code otherwise
    */
+  virtual OFCondition receiveFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
+                                         const T_ASC_PresentationContextID presID,
+                                         DcmDataset *&reqDataset);
+
+  /** Handle C-FIND request. This function is deprecated and will be removed in
+   *  the future. For now it calls receiveFINDRequest() which should be used
+   *  instead.
+   *  @param reqMessage [in]  The C-FIND request message that was received
+   *  @param presID     [in]  The presentation context to be used. By default, the
+   *                          presentation context of the request is used.
+   *  @param reqDataset [out] Pointer to the dataset received
+   *  @return status, EC_Normal if successful, an error code otherwise
+   */
   virtual OFCondition handleFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
                                         const T_ASC_PresentationContextID presID,
-                                        DcmDataset *&reqDataset);
+                                        DcmDataset *&reqDataset)
+  {
+    DCMNET_WARN("handleFINDRequest() is deprecated, use receiveFINDRequest() instead");
+    return receiveFINDRequest(reqMessage, presID, reqDataset);
+  }
 
   /** Respond to the C-FIND request
    *  @param presID        [in] The presentation context ID to respond to
@@ -706,10 +724,29 @@ protected:
    *  @param moveDest   [out] The move destination where to send the instances
    *  @return status, EC_Normal if successful, an error code otherwise
    */
+  virtual OFCondition receiveMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
+                                         const T_ASC_PresentationContextID presID,
+                                         DcmDataset *&reqDataset,
+                                         OFString &moveDest);
+
+  /** Receive C-MOVE request on the currently active association. This function
+   *  is deprecated and will be removed in the future. For now it calls
+   *  receiveMOVERequest() which should be used instead.
+   *  @param reqMessage [in]  The C-MOVE request message that was received
+   *  @param presID     [in]  The presentation context to be used. By default, the
+   *                          presentation context of the request is used.
+   *  @param reqDataset [out] Pointer to the dataset received
+   *  @param moveDest   [out] The move destination where to send the instances
+   *  @return status, EC_Normal if successful, an error code otherwise
+   */
   virtual OFCondition handleMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
                                         const T_ASC_PresentationContextID presID,
                                         DcmDataset *&reqDataset,
-                                        OFString &moveDest);
+                                        OFString &moveDest)
+  {
+    DCMNET_WARN("handleMOVERequest() is deprecated, use receiveMOVERequest() instead");
+    return receiveMOVERequest(reqMessage, presID, reqDataset, moveDest);
+  }
 
   /** Respond to the C-MOVE request
    *  @param presID        [in] The presentation context ID to respond to
@@ -754,10 +791,29 @@ protected:
    *  @param actionTypeID [out] Action Type ID from the command set received
    *  @return status, EC_Normal if successful, an error code otherwise
    */
+  virtual OFCondition receiveACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
+                                           const T_ASC_PresentationContextID presID,
+                                           DcmDataset *&reqDataset,
+                                           Uint16 &actionTypeID);
+
+  /** Receive N-ACTION request on the currently opened association. This
+   *  function is deprecated and will be removed in the future. For now it calls
+   *  receiveACTIONRequest() which should be used instead.
+   *  @param reqMessage   [in]  The N-ACTION request message that was received
+   *  @param presID       [in]  The presentation context to be used. By default, the
+   *                            presentation context of the request is used.
+   *  @param reqDataset   [out] Pointer to the dataset received
+   *  @param actionTypeID [out] Action Type ID from the command set received
+   *  @return status, EC_Normal if successful, an error code otherwise
+   */
   virtual OFCondition handleACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
                                           const T_ASC_PresentationContextID presID,
                                           DcmDataset *&reqDataset,
-                                          Uint16 &actionTypeID);
+                                          Uint16 &actionTypeID)
+  {
+    DCMNET_WARN("handleACTIONRequest() is deprecated, use receiveACTIONRequest() instead");
+    return receiveACTIONRequest(reqMessage, presID, reqDataset, actionTypeID);
+  }
 
   /** Respond to the N-ACTION request
    *  @param presID         [in] The presentation context ID to respond to
index c1acb81dfedc076de6dd8c5fb524379c6fcb29b8..209005191931b3737b99ca21c39028b1e5c1c3bf 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2014, OFFIS e.V.
+ *  Copyright (C) 2008-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -291,7 +291,7 @@ public:
    *          failure of the storage request, EC_Normal will be returned.
    */
   virtual OFCondition sendSTORERequest(const T_ASC_PresentationContextID presID,
-                                       const OFString &dicomFile,
+                                       const OFFilename &dicomFile,
                                        DcmDataset *dataset,
                                        Uint16 &rspStatusCode,
                                        const OFString &moveOriginatorAETitle = "",
index 8ac78d31c2023015928ffdffa7fa0572cfdb620e..7804750ed321d3370e396f6e61cbb414a03478a4 100644 (file)
@@ -44,6 +44,8 @@ assoc.o: assoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -124,6 +126,8 @@ dcasccff.o: dcasccff.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -184,6 +188,8 @@ dcasccfg.o: dcasccfg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -301,6 +307,8 @@ dccfrsmp.o: dccfrsmp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -369,6 +377,8 @@ dccfuidh.o: dccfuidh.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
 dcmlayer.o: dcmlayer.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -429,6 +439,8 @@ dcmtrans.o: dcmtrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -490,6 +502,8 @@ dcompat.o: dcompat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/diutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
@@ -555,6 +569,8 @@ dcuserid.o: dcuserid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h dulstruc.h
 dfindscu.o: dfindscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmnet/dfindscu.h \
@@ -598,6 +614,8 @@ dfindscu.o: dfindscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -672,6 +690,8 @@ dimcancl.o: dimcancl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -702,6 +722,8 @@ dimcmd.o: dimcmd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -797,6 +819,8 @@ dimdump.o: dimdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -858,6 +882,8 @@ dimecho.o: dimecho.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -919,6 +945,8 @@ dimfind.o: dimfind.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -980,6 +1008,8 @@ dimget.o: dimget.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1042,6 +1072,8 @@ dimmove.o: dimmove.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1103,6 +1135,8 @@ dimse.o: dimse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1186,6 +1220,8 @@ dimstore.o: dimstore.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1205,18 +1241,23 @@ dimstore.o: dimstore.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h
 diutil.o: diutil.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dicom.h \
- ../include/dcmtk/dcmnet/cond.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmnet/diutil.h ../include/dcmtk/dcmnet/dicom.h \
+ ../include/dcmtk/dcmnet/cond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -1245,10 +1286,7 @@ diutil.o: diutil.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1311,6 +1349,8 @@ dstorscp.o: dstorscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1381,6 +1421,7 @@ dstorscp.o: dstorscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -1438,6 +1479,8 @@ dstorscu.o: dstorscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1506,6 +1549,7 @@ dstorscu.o: dstorscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -1564,6 +1608,8 @@ dul.o: dul.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1627,6 +1673,8 @@ dulconst.o: dulconst.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/diutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
@@ -1689,12 +1737,25 @@ dulextra.o: dulextra.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmnet/extneg.h ../include/dcmtk/dcmnet/dcuserid.h \
  dulstruc.h dulpriv.h ../include/dcmtk/dcmnet/dcmtrans.h \
- ../include/dcmtk/dcmnet/dcmlayer.h
+ ../include/dcmtk/dcmnet/dcmlayer.h ../include/dcmtk/dcmnet/diutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../include/dcmtk/dcmnet/dimse.h ../include/dcmtk/dcmnet/assoc.h
 dulfsm.o: dulfsm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
@@ -1740,6 +1801,8 @@ dulfsm.o: dulfsm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1762,16 +1825,21 @@ dulfsm.o: dulfsm.cc ../../config/include/dcmtk/config/osconfig.h \
 dulparse.o: dulparse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmnet/dicom.h ../include/dcmtk/dcmnet/cond.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmnet/dicom.h ../include/dcmtk/dcmnet/cond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -1800,10 +1868,7 @@ dulparse.o: dulparse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1866,6 +1931,8 @@ dulpres.o: dulpres.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1932,6 +1999,8 @@ scp.o: scp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2002,6 +2071,7 @@ scp.o: scp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -2064,6 +2134,8 @@ scpcfg.o: scpcfg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2127,6 +2199,8 @@ scppool.o: scppool.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2197,6 +2271,7 @@ scppool.o: scppool.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -2250,6 +2325,8 @@ scpthrd.o: scpthrd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2320,6 +2397,7 @@ scpthrd.o: scpthrd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -2374,6 +2452,8 @@ scu.o: scu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2442,6 +2522,7 @@ scu.o: scu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
index ea7f9abd4eda5ffc53f1ab9f525074b29237dcf1..22cacce9b5cabb5a6c6396da9371c54ae9386ea6 100644 (file)
@@ -1684,6 +1684,10 @@ ASC_associationWaiting(T_ASC_Network * network, int timeout)
 #else
     nfound = select(s + 1, &fdset, NULL, NULL, &t);
 #endif
+    if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+    {
+      DU_logSelectResult(nfound);
+    }
     return nfound > 0;
 }
 
index 6ea6dee854e3e3c8826339c5a5e090cf68c8eb45..c78b61836da0ce83fd2f7b4ffb9d47dc75bd37f4 100644 (file)
@@ -77,15 +77,6 @@ OFMap<OFString, DcmTransferSyntaxList*>::const_iterator DcmTransferSyntaxMap::en
   return map_.end();
 }
 
-const DcmTransferSyntaxList* DcmTransferSyntaxMap::getTSList(const OFString& ts)
-{
-  OFMap<OFString, DcmTransferSyntaxList*>::const_iterator it = map_.begin();
-  if ( it == map_.end() )
-  {
-    return NULL;
-  }
-  return (*it).second;
-}
 
 void DcmTransferSyntaxMap::clear()
 {
@@ -97,7 +88,6 @@ void DcmTransferSyntaxMap::clear()
   }
 }
 
-
 size_t DcmTransferSyntaxMap::size() const
 {
   return map_.size();
index 892bd57ce614fe489ca527e894c8cbcd06c72b8f..3e2891848598bdba3c198b924d78c360ec8795b5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2012, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -193,6 +193,10 @@ OFBool DcmTransportConnection::fastSelectReadableAssociation(DcmTransportConnect
 #else
   int nfound = select(maxsocketfd + 1, &fdset, NULL, NULL, &t);
 #endif
+  if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    DU_logSelectResult(nfound);
+  }
   if (nfound<=0) return OFFalse;      /* none available for reading */
 
   for (i=0; i<connCount; i++)
@@ -317,7 +321,14 @@ OFBool DcmTCPConnection::networkDataAvailable(int timeout)
 #else
   nfound = select(getSocket() + 1, &fdset, NULL, NULL, &t);
 #endif
-  if (nfound <= 0) return OFFalse;
+  if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    DU_logSelectResult(nfound);
+  }
+  if (nfound <= 0)
+  {
+    return OFFalse;
+  }
   else
   {
     if (FD_ISSET(getSocket(), &fdset)) return OFTrue;
@@ -358,3 +369,4 @@ const char *DcmTCPConnection::errorString(DcmTransportLayerStatus code)
   }
   return "unknown error code";
 }
+
index 27625ee4d51d8aadd97465ec7965e3a7a5fd0cdc..34e8f9976810cb449e8d8d8e47642fd6a31c1088 100644 (file)
 #include <stat.h>
 #endif
 
+#include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/dcmnet/diutil.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 #include "dcmtk/dcmdata/dcfilefo.h"
@@ -854,3 +855,37 @@ DU_neventReportStatusString(Uint16 statusCode)
     }
     return s;
 }
+
+void DU_logSelectResult(int selectReturnValue)
+{
+  if (selectReturnValue < 0)
+  {
+#ifdef HAVE_WINSOCK_H
+    LPVOID errBuf = NULL;
+    OFString err;
+    // Obtain an error string from system error code
+    if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+      NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), OFreinterpret_cast(LPTSTR, &errBuf), 0, NULL) > 0)
+    {
+      err = (OFstatic_cast(const char *, errBuf));
+    } else
+      err = "Unknown Winsock error code";
+    LocalFree(errBuf);
+    DCMNET_DEBUG("Windows Socket error while waiting for incoming network data: " << err);
+#else
+    // POSIX interface
+    char buf[256];
+    DCMNET_DEBUG("Error while waiting for incoming network data: " << OFStandard::strerror(errno, buf, 256));
+#endif
+  }
+  else if (selectReturnValue == 0)
+  {
+    DCMNET_DEBUG("Timeout while waiting for incoming network data");
+  }
+  else
+  {
+    // This function is only meant to be used for return values <= 0, handle
+    // normal case anyway
+    DCMNET_TRACE("Receiving data via select()");
+  }
+}
index 96beda6fc32ae3f49081bc2baff3c56616e3482f..c26d410a3d778b4baa06eaaed629e30774f8277f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -61,7 +61,7 @@ static const OFString &dicomToHostFilename(const OFString &dicomFilename,
 
 // implementation of the internal class/struct for a single transfer entry
 
-DcmStorageSCU::TransferEntry::TransferEntry(const OFString &filename,
+DcmStorageSCU::TransferEntry::TransferEntry(const OFFilename &filename,
                                             const E_FileReadMode readMode,
                                             const OFString &sopClassUID,
                                             const OFString &sopInstanceUID,
@@ -358,13 +358,13 @@ OFCondition DcmStorageSCU::removeSOPInstance(const OFString &sopClassUID,
 }
 
 
-OFCondition DcmStorageSCU::addDicomFile(const OFString &filename,
+OFCondition DcmStorageSCU::addDicomFile(const OFFilename &filename,
                                         const E_FileReadMode readMode,
                                         const OFBool checkValues)
 {
     OFCondition status = EC_IllegalParameter;
     // check for non-empty filename
-    if (!filename.empty())
+    if (!filename.isEmpty())
     {
         DCMNET_DEBUG("adding DICOM file '" << filename << "'");
         const size_t numInstances = TransferList.size();
@@ -464,20 +464,20 @@ OFCondition DcmStorageSCU::addDataset(DcmDataset *dataset,
 }
 
 
-OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
+OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFFilename &filename,
                                                      const E_FileReadMode readMode,
                                                      const OFBool checkValues)
 {
     DCMNET_DEBUG("adding DICOM files referenced from '" << filename << "'");
     // read the DICOMDIR file (always require meta-header to be present)
     DcmFileFormat fileformat;
-    OFCondition status = fileformat.loadFile(filename.c_str(), EXS_Unknown, EGL_noChange, DCM_MaxReadLength, ERM_fileOnly);
+    OFCondition status = fileformat.loadFile(filename, EXS_Unknown, EGL_noChange, DCM_MaxReadLength, ERM_fileOnly);
     if (status.good())
     {
         DcmStack stack;
         // do not use the DcmDirectoryRecord class, but access the data elements directly
         DcmDataset *dataset = fileformat.getDataset();
-        OFString dirName;
+        OFFilename dirName;
         OFStandard::getDirNameFromPath(dirName, filename, OFFalse /* assumeDirName */);
         // iterate over all items (directory records) where ReferencedFileID is present
         while (dataset->search(DCM_ReferencedFileID, stack, ESM_afterStackTop, OFTrue).good())
@@ -485,7 +485,8 @@ OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
             // make sure that the dataset and element pointer are there
             if (stack.card() > 1)
             {
-                OFString pathName, fileID, sopClassUID, sopInstanceUID, transferSyntaxUID;
+                OFFilename pathName;
+                OFString fileID, sopClassUID, sopInstanceUID, transferSyntaxUID;
                 // first, get the name of the referenced DICOM file
                 DcmElement *element = OFstatic_cast(DcmElement *, stack.top());
                 if (element != NULL)
@@ -508,9 +509,9 @@ OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
                     if (status.good())
                     {
                         OFString tmpString;
+                        const OFFilename tmpFilename(dicomToHostFilename(fileID, tmpString), pathName.usesWideChars() /*convert*/);
                         // consider that the value of ReferencedFileID is relative to the DICOMDIR
-                        OFStandard::combineDirAndFilename(pathName, dirName, dicomToHostFilename(fileID, tmpString),
-                            OFTrue /* allowEmptyDirName */);
+                        OFStandard::combineDirAndFilename(pathName, dirName, tmpFilename, OFTrue /* allowEmptyDirName */);
                         // create a new entry ...
                         TransferEntry *entry = new TransferEntry(pathName, readMode, sopClassUID, sopInstanceUID, transferSyntaxUID);
                         if (entry != NULL)
@@ -528,7 +529,7 @@ OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
                         DCMNET_DEBUG("successfully added SOP instance " << sopInstanceUID << " to the transfer list");
                     } else {
                         DCMNET_ERROR("cannot add DICOM file from DICOMDIR to the transfer list: "
-                            << (pathName.empty() ? fileID : pathName) << ": " << status.text());
+                            << (pathName.isEmpty() ? fileID : pathName) << ": " << status.text());
                     }
                 } else {
                     DCMNET_ERROR("cannot add DICOM file from DICOMDIR with empty filename");
@@ -806,7 +807,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                     break;
                 }
                 // output debug information on the SOP instance to be sent
-                if ((*CurrentTransferEntry)->Filename.empty())
+                if ((*CurrentTransferEntry)->Filename.isEmpty())
                 {
                     if ((*CurrentTransferEntry)->Dataset != NULL)
                     {
@@ -825,11 +826,17 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                 } else {
                     DCMNET_DEBUG("sending SOP instance from file: " << (*CurrentTransferEntry)->Filename);
                     // load SOP instance from DICOM file
-                    status = fileformat.loadFile((*CurrentTransferEntry)->Filename.c_str(), EXS_Unknown, EGL_noChange,
+                    status = fileformat.loadFile((*CurrentTransferEntry)->Filename, EXS_Unknown, EGL_noChange,
                         DCM_MaxReadLength, (*CurrentTransferEntry)->FileReadMode);
-                    // do not store the dataset pointer in the transfer entry, because this pointer
-                    // will become invalid for the next iteration of this while-loop.
-                    dataset = fileformat.getDataset();
+                    if (status.good())
+                    {
+                        // do not store the dataset pointer in the transfer entry, because this pointer
+                        // will become invalid for the next iteration of this while-loop.
+                        dataset = fileformat.getDataset();
+                    } else {
+                        DCMNET_ERROR("cannot send SOP instance from file: " << (*CurrentTransferEntry)->Filename
+                            << ": " << status.text());
+                    }
                 }
                 // send SOP instance to the peer using a C-STORE request message
                 if (status.good())
@@ -870,7 +877,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                     // ... remember that this SOP instance has already been sent
                     (*CurrentTransferEntry)->RequestSent = OFTrue;
                     // check whether we need to compact or delete the dataset
-                    if ((*CurrentTransferEntry)->Filename.empty() && ((*CurrentTransferEntry)->Dataset != NULL))
+                    if ((*CurrentTransferEntry)->Filename.isEmpty() && ((*CurrentTransferEntry)->Dataset != NULL))
                     {
                         if ((*CurrentTransferEntry)->DatasetHandlingMode == HM_compactAfterSend)
                         {
@@ -914,7 +921,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
 }
 
 
-void DcmStorageSCU::notifySOPInstanceSent(const TransferEntry &transferEntry)
+void DcmStorageSCU::notifySOPInstanceSent(const TransferEntry & /*transferEntry*/)
 {
     // do nothing in the default implementation
 }
@@ -1040,7 +1047,7 @@ OFCondition DcmStorageSCU::createReportFile(const OFString &filename) const
             {
                 DcmXfer orgXfer((*transferEntry)->TransferSyntaxUID.c_str());
                 stream << "Number        : " << (++counter) << OFendl;
-                if (!(*transferEntry)->Filename.empty())
+                if (!(*transferEntry)->Filename.isEmpty())
                     stream << "Filename      : " << (*transferEntry)->Filename << OFendl;
                 stream << "SOP Instance  : " << (*transferEntry)->SOPInstanceUID << OFendl;
                 stream << "SOP Class     : " << (*transferEntry)->SOPClassUID << " = "
index 434681a1d289c1617bfbd862af4e49956c3d876c..1bb8c5645119df0c7ca069b2e10cc5813fc7d88f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -380,7 +380,7 @@ DUL_InitializeNetwork(const char *mode,
 **
 **
 ** Algorithm:
-**      Close the socket and free the memeory occupied by the network key
+**      Close the socket and free the memory occupied by the network key
 */
 OFCondition
 DUL_DropNetwork(DUL_NETWORKKEY ** callerNetworkKey)
@@ -1450,8 +1450,8 @@ DUL_DefaultServiceParameters(DUL_ASSOCIATESERVICEPARAMETERS * params)
         "",                     /* Called implementation class UID */
         "",                     /* Called implementation vers name */
         0,                      /* peer max pdu */
-        NULL,                   /* Requested Extended Negotation List */
-        NULL,                   /* Accepted Extended Negotation List */
+        NULL,                   /* Requested Extended Negotiation List */
+        NULL,                   /* Accepted Extended Negotiation List */
         NULL,                   /* Requested User Identify Negotiation */
         NULL,                   /* Accepted User Identify Negotiation */
         OFFalse                 /* don't use Secure Transport Layer */
@@ -1591,6 +1591,10 @@ receiveTransportConnectionTCP(PRIVATE_NETWORKKEY ** network,
             nfound = select((*network)->networkSpecific.TCP.listenSocket + 1,
                             &fdset, NULL, NULL, &timeout_val);
 #endif
+            if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+            {
+                DU_logSelectResult(nfound);
+            }
             if (nfound > 0) {
                 if (FD_ISSET((*network)->networkSpecific.TCP.listenSocket, &fdset))
                     connected++;
@@ -1618,6 +1622,10 @@ receiveTransportConnectionTCP(PRIVATE_NETWORKKEY ** network,
                 nfound = select((*network)->networkSpecific.TCP.listenSocket + 1,
                                 &fdset, NULL, NULL, &timeout_val);
 #endif
+                if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+                {
+                    DU_logSelectResult(nfound);
+                }
                 if (nfound > 0) {
                     if (FD_ISSET((*network)->networkSpecific.TCP.listenSocket,
                                  &fdset))
@@ -2072,7 +2080,7 @@ initializeNetworkTCP(PRIVATE_NETWORKKEY ** key, void *parameter)
       int sock;
       struct sockaddr_in server;
 
-      /* Create socket for internet type communication */
+      /* Create socket for Internet type communication */
       (*key)->networkSpecific.TCP.port = *(int *) parameter;
       (*key)->networkSpecific.TCP.listenSocket = socket(AF_INET, SOCK_STREAM, 0);
       sock = (*key)->networkSpecific.TCP.listenSocket;
@@ -2127,7 +2135,14 @@ initializeNetworkTCP(PRIVATE_NETWORKKEY ** key, void *parameter)
         return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
       }
 #endif
-      listen(sock, PRV_LISTENBACKLOG);
+      /* Listen on the socket */
+      if (listen(sock, PRV_LISTENBACKLOG) < 0)
+      {
+        char buf[256];
+        OFString msg = "TCP Initialization Error: ";
+        msg += OFStandard::strerror(errno, buf, sizeof(buf));
+        return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
+      }
     }
 
     (*key)->networkSpecific.TCP.tLayer = new DcmTransportLayer((*key)->applicationFunction);
@@ -2411,7 +2426,7 @@ static SC_MAP scMap[] = {
 **      Display the contents of the presentation context list
 **
 ** Parameter Dictionary:
-**      l  Head of the list of various presentation conmtexts.
+**      l  Head of the list of various presentation contexts.
 **
 ** Return Values:
 **
@@ -2650,7 +2665,7 @@ clearRequestorsParams(DUL_ASSOCIATESERVICEPARAMETERS * params)
 /* clearPresentationContext
 **
 ** Purpose:
-**      Free the memory oocupied by the given presentation context.
+**      Free the memory occupied by the given presentation context.
 **
 ** Parameter Dictionary:
 **      l  Head of list of the presentation contexts to be freed.
index f80c9211e7e8da0c4974be0a836ebc4c29e48915..f7d143fdf96d24d98ec580e8b4c6a53d4424e3f8 100644 (file)
@@ -97,6 +97,7 @@
 #include "dulstruc.h"
 #include "dulpriv.h"
 #include "dcmtk/dcmnet/dcmtrans.h"
+#include "dcmtk/dcmnet/diutil.h"
 
 OFBool
 DUL_dataWaiting(DUL_ASSOCIATIONKEY * callerAssociation, int timeout)
@@ -152,6 +153,10 @@ DUL_associationWaiting(DUL_NETWORKKEY * callerNet, int timeout)
 #else
     nfound = select(s + 1, &fdset, NULL, NULL, &t);
 #endif
+    if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+    {
+        DU_logSelectResult(nfound);
+    }
     if (nfound <= 0) assocWaiting = OFFalse;
     else
     {
index edf7f30d3aadb275e51ef1785f2254a159bfbae4..eadee9c474d4ad968e4290a4210b1acc8939da8a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -1391,7 +1391,7 @@ DT_2_IndicatePData(PRIVATE_NETWORKKEY ** /*network*/,
     }
 
     /* if after having counted the PDVs the length variable does not equal */
-    /* 0, the PDV lenghts did not add up correctly. Something is fishy. */
+    /* 0, the PDV lengths did not add up correctly. Something is fishy. */
     if (length != 0)
     {
        char buf[256];
@@ -2242,9 +2242,9 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
     Sint32 connectTimeout = dcmConnectionTimeout.get();
 
 #ifdef HAVE_WINSOCK_H
-      u_long arg = TRUE;
+    u_long arg = TRUE;
 #else
-      int flags = 0;
+    int flags = 0;
 #endif
 
     if (connectTimeout >= 0)
@@ -2259,7 +2259,10 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
     }
 
     // depending on the socket mode, connect will block or return immediately
-    int rc = connect(s, (struct sockaddr *) & server, sizeof(server));
+    int rc;
+    do {
+        rc = connect(s, (struct sockaddr *) & server, sizeof(server));
+    } while (rc == -1 && errno == EINTR);
 
 #ifdef HAVE_WINSOCK_H
     if (rc == SOCKET_ERROR && WSAGetLastError() == WSAEWOULDBLOCK)
@@ -2281,7 +2284,14 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
         timeout.tv_sec = connectTimeout;
         timeout.tv_usec = 0;
 
-        rc = select(s+1, NULL, &fdSet, NULL, &timeout);
+        do {
+            rc = select(s + 1, NULL, &fdSet, NULL, &timeout);
+        } while (rc == -1 && errno == EINTR);
+
+        if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+        {
+            DU_logSelectResult(rc);
+        }
 
         // reset socket to blocking mode
 #ifdef HAVE_WINSOCK_H
@@ -2364,7 +2374,7 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
 
     if (rc < 0)
     {
-        // an error other than timeout in non-blocking mode has occured,
+        // an error other than timeout in non-blocking mode has occurred,
         // either in connect() or in select().
 #ifdef HAVE_WINSOCK_H
         (void) shutdown(s,  1 /* SD_SEND */);
@@ -2963,7 +2973,7 @@ sendPDataTCP(PRIVATE_ASSOCIATIONKEY ** association,
         /* because the current PDV's length can be greater than maxLength, we need */
         /* to start another loop so that we are able to send data gradually. So, */
         /* as long as this is the first iteration or length is greater than 0 and */
-        /* at the same time no error occured, do the following */
+        /* at the same time no error occurred, do the following */
         firstTrip = OFTrue;
         while ((firstTrip || (length > 0)) && (cond.good())) {
             /* indicate that the first iteration has been executed */
@@ -3307,8 +3317,8 @@ readPDUHead(PRIVATE_ASSOCIATIONKEY ** association,
         *PDULength = (*association)->nextPDULength;
 
         /* check if the value in the length field of the PDU shows a legal value; */
-        /* there is a maximum lenght for PDUs which shall be sent over the network. */
-        /* the lenght of this PDU must not be greater than the specified maximum length. */
+        /* there is a maximum length for PDUs which shall be sent over the network. */
+        /* the length of this PDU must not be greater than the specified maximum length. */
         /* (bugfix - thanks to B. Gorissen, Philips Medical Systems) */
         if ((*PDUType == DUL_TYPEDATA) && (*PDULength > (*association)->maxPDVInput))
         {
@@ -3616,7 +3626,7 @@ defragmentTCP(DcmTransportConnection *connection, DUL_BLOCKOPTIONS block, time_t
     while (l > 0)
     {
         /* receive data from the network connection; wait until */
-        /* we actually did receive data or an error occured */
+        /* we actually did receive data or an error occurred */
         do
         {
             /* if DUL_NOBLOCK is specified as a blocking option, we only want to wait a certain
@@ -3647,7 +3657,7 @@ defragmentTCP(DcmTransportConnection *connection, DUL_BLOCKOPTIONS block, time_t
             if (rtnLen != NULL)
                 *rtnLen += (unsigned long) bytesRead;
         } else {
-            /* in case we did not receive any data, an error must have occured; return a corresponding result value */
+            /* in case we did not receive any data, an error must have occurred; return a corresponding result value */
             return DUL_NETWORKCLOSED;
         }
     }
@@ -3765,7 +3775,7 @@ setTCPBufferLength(int sock)
 **      internalList            Input list from which the two output lists
 **                              are derived
 **      SCUSCPRoleList          Role list (returned to the caller)
-**      userContextList         User context list (returend to the caller)
+**      userContextList         User context list (returned to the caller)
 **
 ** Return Values:
 **
@@ -3880,7 +3890,7 @@ findPresentationCtx(
 /* findSCUSCPRole
 **
 ** Purpose:
-**      Search for a SCUSCP role list, given the abstarct syntax as the
+**      Search for a SCUSCP role list, given the abstract syntax as the
 **      key.
 **
 ** Parameter Dictionary:
index e07a0caa4c3739bf0fcaf454ed1f4e6b533e5f1a..8a10d323d13f049475f47b702a17e850bdbbde16 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -69,6 +69,7 @@
 #include "dcmtk/ofstd/ofstdinc.h"
 
 #include "dcmtk/ofstd/ofstream.h"
+#include "dcmtk/ofstd/ofstd.h"  // for OFStandard::safeSubtract() and safeAdd()
 #include "dcmtk/dcmnet/dicom.h"
 #include "dcmtk/dcmnet/cond.h"
 #include "dcmtk/dcmnet/lst.h"
@@ -109,6 +110,9 @@ static OFCondition
 makeLengthError(const char *pdu, unsigned long bufSize, unsigned long minSize = 0,
         unsigned long length = 0);
 
+static OFCondition
+makeUnderflowError(const char *pdu, unsigned long minuend, unsigned long subtrahend);
+
 /* parseAssociate
 **
 ** Purpose:
@@ -119,7 +123,7 @@ makeLengthError(const char *pdu, unsigned long bufSize, unsigned long minSize =
 **      buf             Buffer holding the PDU in the stream format
 **      pduLength       Length of the buffer
 **      assoc           The Associate PDU to be extracted
-**                      (returend to the caller)
+**                      (returned to the caller)
 **
 ** Return Values:
 **
@@ -236,6 +240,8 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,
             DCMNET_TRACE("Successfully parsed Presentation Context");
             break;
         case DUL_TYPEUSERINFO:
+            // parse user info, which can contain several sub-items like User
+            // Identity Negotiation or SOP Class Extended Negotiation
             cond = parseUserInfo(&assoc->userInfo, buf, &itemLength, assoc->type, pduLength);
             if (cond.bad())
                 return cond;
@@ -246,7 +252,8 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,
         default:
             cond = parseDummy(buf, &itemLength, pduLength);
             buf += itemLength;
-            pduLength -= itemLength;
+            if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))
+              return makeUnderflowError("unknown item type", pduLength, itemLength);
             break;
         }
     }
@@ -405,7 +412,8 @@ parsePresentationContext(unsigned char type,
             default:
                 cond = parseDummy(buf, &length, presentationLength);
                 buf += length;
-                presentationLength -= length;
+                if (!OFStandard::safeSubtract(presentationLength, length, presentationLength))
+                  return makeUnderflowError("unknown presentation context type", presentationLength, length);
                 break;
             }
         }
@@ -440,7 +448,7 @@ parseUserInfo(DUL_USERINFO * userInfo,
               unsigned char *buf,
               unsigned long *itemLength,
               unsigned char typeRQorAC,
-              unsigned long availData)
+              unsigned long availData /* bytes left for in this PDU */)
 {
     unsigned short userLength;
     unsigned long length;
@@ -449,25 +457,34 @@ parseUserInfo(DUL_USERINFO * userInfo,
     SOPClassExtendedNegotiationSubItem *extNeg = NULL;
     UserIdentityNegotiationSubItem *usrIdent = NULL;
 
-    // The minimum allowed size is 4 byte, else we read past the buffer end
+    // minimum allowed size is 4 byte (case where the length of the user data is 0),
+    // else we read past the buffer end
     if (availData < 4)
         return makeLengthError("user info", availData, 4);
 
+    // skip item type (50H) field
     userInfo->type = *buf++;
+    // skip unused ("reserved") field
     userInfo->rsv1 = *buf++;
+    // get and remeber announced length of user data
     EXTRACT_SHORT_BIG(buf, userInfo->length);
+    // .. and skip over the two length field bytes
     buf += 2;
 
+    // userLength contains announced length of full user item structure,
+    // will be used here to count down the available data later
     userLength = userInfo->length;
+    // itemLength contains full length of the user item including the 4 bytes extra header (type, reserved + 2 for length)
     *itemLength = userLength + 4;
 
-    // Does this item claim to be larger than the available data?
-    if (availData - 4 < userLength)
+    // does this item claim to be larger than the available data?
+    if (availData < *itemLength)
         return makeLengthError("user info", availData, 0, userLength);
 
     DCMNET_TRACE("Parsing user info field ("
             << STD_NAMESPACE hex << STD_NAMESPACE setfill('0') << STD_NAMESPACE setw(2) << (unsigned int)userInfo->type
             << STD_NAMESPACE dec << "), Length: " << (unsigned long)userInfo->length);
+    // parse through different types of user items as long as we have data
     while (userLength > 0) {
         DCMNET_TRACE("Parsing remaining " << (long)userLength << " bytes of User Information" << OFendl
                 << "Next item type: "
@@ -493,7 +510,8 @@ parseUserInfo(DUL_USERINFO * userInfo,
         case DUL_TYPEASYNCOPERATIONS:
             cond = parseDummy(buf, &length, userLength);
             buf += length;
-            userLength -= (unsigned short) length;
+            if (!OFStandard::safeSubtract(userLength, OFstatic_cast(short unsigned int, length), userLength))
+              return makeLengthError("asynchronous operation user item type", userLength, length);
             break;
         case DUL_TYPESCUSCPROLE:
             role = (PRV_SCUSCPROLE*)malloc(sizeof(PRV_SCUSCPROLE));
@@ -545,9 +563,14 @@ parseUserInfo(DUL_USERINFO * userInfo,
           userLength -= (unsigned short) length;
           break;
         default:
-            cond = parseDummy(buf, &length, userLength);
+            // we hit an unknown user item that is not defined in the standard
+            // or still unknown to DCMTK
+            cond = parseDummy(buf, &length /* returns bytes "handled" by parseDummy */, userLength /* data available in bytes for user item */);
+            // skip the bytes read
             buf += length;
-            userLength -= (unsigned short) length;
+            // subtract bytes of parsed data from available data bytes
+            if (!OFStandard::safeSubtract(userLength, OFstatic_cast(unsigned short, length), userLength))
+              return makeUnderflowError("unknown user item", userLength, length);
             break;
         }
     }
@@ -604,8 +627,9 @@ parseMaxPDU(DUL_MAXLENGTH * max, unsigned char *buf,
 **      User Length
 **
 ** Parameter Dictionary:
-**      buf             The buffer that is to be parsed
-**      itemLength      Length of structure extracted.
+**      buf             The buffer that is to be parsed (input/output value)
+**      itemLength      Length of structure extracted (output value)
+*       availData       Number of bytes announced to be available for this sub item (input value)
 **
 ** Return Values:
 **
@@ -617,23 +641,26 @@ parseMaxPDU(DUL_MAXLENGTH * max, unsigned char *buf,
 static OFCondition
 parseDummy(unsigned char *buf, unsigned long *itemLength, unsigned long availData)
 {
-    unsigned short
-        userLength;
-
     // Is there enough data for the length field?
     if (availData < 4)
         return makeLengthError("dummy item", availData, 4);
 
+    // Get announced length of this sub-item and skip over the bytes read
+    // 1 byte item-type (e.g. 58H for User Identity Negotiation), 1 byte reserved,
+    // and 2 bytes length field
+    unsigned short userLength;
     buf++;
     buf++;
     EXTRACT_SHORT_BIG(buf, userLength);
     buf += 2;
 
+    // Return full length (announced + 4 extra bytes)
+    *itemLength = userLength + 4;
+
     // Is there less data than the length field claims there is?
     if (availData - 4 < userLength)
         return makeLengthError("dummy item", availData, 0, userLength);
 
-    *itemLength = userLength + 4;
     return EC_Normal;
 }
 
@@ -682,8 +709,11 @@ parseSCUSCPRole(PRV_SCUSCPROLE * role, unsigned char *buf,
     if (role->length - 4 < UIDLength)
         return makeLengthError("SCU-SCP role list UID", role->length, 0, UIDLength);
 
-    (void) memcpy(role->SOPClassUID, buf, UIDLength);
-    role->SOPClassUID[UIDLength] = '\0';
+    OFStandard::strlcpy(role->SOPClassUID, (char*)buf, sizeof(role->SOPClassUID));
+    if (UIDLength > sizeof(role->SOPClassUID))
+    {
+      DCMNET_WARN("Provided role SOP Class UID " << role->SOPClassUID << " is shorter than its announced length " << UIDLength << " (ignored)");
+    }
     buf += UIDLength;
     role->SCURole = *buf++;
     role->SCPRole = *buf++;
@@ -705,7 +735,6 @@ parseSCUSCPRole(PRV_SCUSCPROLE * role, unsigned char *buf,
 ** Return Values:
 **
 */
-
 static OFCondition
 parseExtNeg(SOPClassExtendedNegotiationSubItem* extNeg, unsigned char *buf,
                 unsigned long *length, unsigned long availData)
@@ -795,6 +824,31 @@ makeLengthError(const char *pdu, unsigned long bufSize, unsigned long minSize,
     return ret;
 }
 
+/* makeUnderflowError
+ *
+ * This function is used to generate the OFCondition code if an underflow
+ * computation has been detected.
+ *
+ * @param pdu The name of the field or PDU which caused the invalid computation
+ * @param minuend The field (probably length) subtracted from
+ * @param subtrahend The number subtracted from minuend
+ */
+static OFCondition
+makeUnderflowError(const char *pdu, unsigned long minuend,
+        unsigned long subtrahend)
+{
+  OFStringStream stream;
+  stream << "DUL Illegal " << pdu << ". Got " << minuend << " bytes of data and told to subtrat " << subtrahend << " bytes of data";
+  stream << "." << OFStringStream_ends;
+
+  OFCondition ret;
+  OFSTRINGSTREAM_GETSTR(stream, tmpString)
+  ret = makeDcmnetCondition(DULC_INCORRECTBUFFERLENGTH, OF_error, tmpString);
+  OFSTRINGSTREAM_FREESTR(tmpString)
+  return ret;
+}
+
+
 /* trim_trailing_spaces
 **
 ** Purpose:
index f7405f664e4ce778bc9b4590f6e4124bda480944..af52ad9027b6c37b87ff8ec70be32f5ab91926cf 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2015, OFFIS e.V.
+ *  Copyright (C) 2009-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -22,7 +22,6 @@
 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmnet/scp.h"
-#include "dcmtk/dcmnet/diutil.h"
 #include "dcmtk/dcmnet/assoc.h"
 #include "dcmtk/dcmdata/dcostrmf.h" /* for class DcmOutputFileStream */
 
@@ -801,9 +800,9 @@ Uint16 DcmSCP::checkSTORERequest(T_DIMSE_C_StoreRQ & /*reqMessage*/,
 
 // -- C-FIND --
 
-OFCondition DcmSCP::handleFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
-                                      const T_ASC_PresentationContextID presID,
-                                      DcmDataset *&reqDataset)
+OFCondition DcmSCP::receiveFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
+                                       const T_ASC_PresentationContextID presID,
+                                       DcmDataset *&reqDataset)
 {
   // Do some basic validity checks
   if (m_assoc == NULL)
@@ -916,10 +915,10 @@ OFCondition DcmSCP::checkForCANCEL(T_ASC_PresentationContextID presID,
 
 // -- C-MOVE --
 
-OFCondition DcmSCP::handleMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
-                                      const T_ASC_PresentationContextID presID,
-                                      DcmDataset *&reqDataset,
-                                      OFString &moveDest)
+OFCondition DcmSCP::receiveMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
+                                       const T_ASC_PresentationContextID presID,
+                                       DcmDataset *&reqDataset,
+                                       OFString &moveDest)
 {
   // Do some basic validity checks
   if (m_assoc == NULL)
@@ -1040,10 +1039,10 @@ OFCondition DcmSCP::sendMOVEResponse(const T_ASC_PresentationContextID presID,
 
 // -- N-ACTION --
 
-OFCondition DcmSCP::handleACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
-                                        const T_ASC_PresentationContextID presID,
-                                        DcmDataset *&reqDataset,
-                                        Uint16 &actionTypeID)
+OFCondition DcmSCP::receiveACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
+                                         const T_ASC_PresentationContextID presID,
+                                         DcmDataset *&reqDataset,
+                                         Uint16 &actionTypeID)
 {
   // Do some basic validity checks
   if (m_assoc == NULL)
@@ -1895,21 +1894,21 @@ void DcmSCP::notifyAssociationRequest(const T_ASC_Parameters &params,
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& calledAETitle)
+OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& /*calledAETitle*/)
 {
   return OFTrue;
 }
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCallingAETitleAccepted(const OFString& callingAETitle)
+OFBool DcmSCP::checkCallingAETitleAccepted(const OFString& /*callingAETitle*/)
 {
   return OFTrue;
 }
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCallingHostAccepted(const OFString& hostOrIP)
+OFBool DcmSCP::checkCallingHostAccepted(const OFString& /*hostOrIP*/)
 {
   return OFTrue;
 }
index 315eec86b8675d01cff65f6bfc4b19a32488b112..1e0ecd411f1e0e48e7e253550095b411abe58cc2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2014, OFFIS e.V.
+ *  Copyright (C) 2008-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -680,7 +680,7 @@ OFCondition DcmSCU::sendECHORequest(const T_ASC_PresentationContextID presID)
 
 // Sends C-STORE request to another DICOM application
 OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
-                                     const OFString &dicomFile,
+                                     const OFFilename &dicomFile,
                                      DcmDataset *dataset,
                                      Uint16 &rspStatusCode,
                                      const OFString &moveOriginatorAETitle,
@@ -705,12 +705,12 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
   req->MessageID = nextMessageID();
   /* Load file if necessary */
   DcmFileFormat *fileformat = NULL;
-  if (!dicomFile.empty())
+  if (!dicomFile.isEmpty())
   {
     fileformat = new DcmFileFormat();
     if (fileformat == NULL)
       return EC_MemoryExhausted;
-    cond = fileformat->loadFile(dicomFile.c_str());
+    cond = fileformat->loadFile(dicomFile);
     if (cond.bad())
     {
       delete fileformat;
@@ -729,7 +729,7 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
   if (sopClassUID.empty() || sopInstanceUID.empty() || ((pcid == 0) && (xferSyntax == EXS_Unknown)))
   {
     DCMNET_ERROR("Cannot send SOP instance, missing information:");
-    if (!dicomFile.empty())
+    if (!dicomFile.isEmpty())
       DCMNET_ERROR("  DICOM Filename   : " << dicomFile);
     DCMNET_ERROR("  SOP Class UID    : " << sopClassUID);
     DCMNET_ERROR("  SOP Instance UID : " << sopInstanceUID);
@@ -799,6 +799,7 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
     OFString xferName = xfer.getXferName();
     DCMNET_ERROR("No presentation context found for sending C-STORE with SOP Class / Transfer Syntax: "
       << sopClassName << " / " << xferName);
+    delete fileformat;
     return DIMSE_NOVALIDPRESENTATIONCONTEXTID;
   }
 
@@ -1370,8 +1371,12 @@ OFCondition DcmSCU::handleSTORERequest(const T_ASC_PresentationContextID /* pres
   }
 
   OFString filename = createStorageFilename(incomingObject);
+  if (OFStandard::fileExists(filename))
+  {
+    DCMNET_WARN("DICOM file already exists, overwriting: " << filename);
+  }
   DcmFileFormat dcmff(incomingObject, OFFalse /* do not copy but take ownership */);
-  result = dcmff.saveFile(filename.c_str());
+  result = dcmff.saveFile(filename);
   if (result.good())
   {
     E_TransferSyntax xferSyntax;
@@ -1388,8 +1393,8 @@ OFCondition DcmSCU::handleSTORERequest(const T_ASC_PresentationContextID /* pres
 }
 
 OFCondition DcmSCU::handleSTORERequestFile(T_ASC_PresentationContextID *presID,
-                                           const OFStringfilename,
-                                           T_DIMSE_C_StoreRQrequest)
+                                           const OFString &filename,
+                                           T_DIMSE_C_StoreRQ *request)
 {
   if (filename.empty())
     return EC_IllegalParameter;
@@ -1413,7 +1418,7 @@ OFCondition DcmSCU::handleSTORERequestFile(T_ASC_PresentationContextID *presID,
     delete filestream;
     if (cond != EC_Normal)
     {
-      unlink(filename.c_str());
+      OFStandard::deleteFile(filename);
     }
     DCMNET_DEBUG("Received dataset on presentation context " << OFstatic_cast(unsigned int, *presID));
   }
@@ -1482,7 +1487,7 @@ OFString DcmSCU::createStorageFilename(DcmDataset *dataset)
 
 
 OFCondition DcmSCU::ignoreSTORERequest(T_ASC_PresentationContextID presID,
-                                       const T_DIMSE_C_StoreRQrequest)
+                                       const T_DIMSE_C_StoreRQ &request)
 {
 
   /* We cannot create the filestream, so ignore the incoming dataset and return an out-of-resources error to the SCU */
@@ -1500,9 +1505,9 @@ OFCondition DcmSCU::ignoreSTORERequest(T_ASC_PresentationContextID presID,
 }
 
 
-void DcmSCU::notifyInstanceStored(const OFStringfilename,
-                                  const OFStringsopClassUID,
-                                  const OFStringsopInstanceUID) const
+void DcmSCU::notifyInstanceStored(const OFString &filename,
+                                  const OFString &sopClassUID,
+                                  const OFString &sopInstanceUID) const
 {
   DCMNET_DEBUG("Stored instance to disk:");
   DCMNET_DEBUG("  Filename: " << filename);
index da9df024ec8336e09ed39701e6c2ab534037cc55..e7e8333ea9ee5fdfa3245818515dca12f611d0d2 100644 (file)
@@ -16,6 +16,8 @@ tdump.o: tdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -81,6 +83,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -123,6 +127,8 @@ tpool.o: tpool.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -216,6 +222,7 @@ tpool.o: tpool.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -228,4 +235,5 @@ tpool.o: tpool.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmnet/dccfuidh.h ../include/dcmtk/dcmnet/dccfpcmp.h \
  ../include/dcmtk/dcmnet/dccfrsmp.h ../include/dcmtk/dcmnet/dccfenmp.h \
  ../include/dcmtk/dcmnet/dccfprmp.h \
- ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/scu.h
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/diutil.h \
+ ../include/dcmtk/dcmnet/scu.h
index 91abd2bdf0ad6fec5a161fb82d0f517c277f78e8..c76e103171432531ce83eef988d800fb7635a331 100644 (file)
@@ -15,6 +15,8 @@ dcmmkcrv.o: dcmmkcrv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -107,6 +109,7 @@ dcmmkcrv.o: dcmmkcrv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dcmmklut.o: dcmmklut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
@@ -149,6 +152,8 @@ dcmmklut.o: dcmmklut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -217,6 +222,7 @@ dcmmklut.o: dcmmklut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dicrvfit.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/digsdfn.h \
@@ -263,6 +269,8 @@ dcmp2pgm.o: dcmp2pgm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -335,6 +343,7 @@ dcmp2pgm.o: dcmp2pgm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -417,6 +426,8 @@ dcmprscp.o: dcmprscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmpstat/dviface.h ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -490,6 +501,7 @@ dcmprscp.o: dcmprscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -568,6 +580,8 @@ dcmprscu.o: dcmprscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmpstat/dviface.h ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -641,6 +655,7 @@ dcmprscu.o: dcmprscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -704,6 +719,8 @@ dcmpschk.o: dcmpschk.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -796,6 +813,7 @@ dcmpschk.o: dcmpschk.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
  ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
@@ -829,6 +847,8 @@ dcmpsmk.o: dcmpsmk.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -921,6 +941,7 @@ dcmpsmk.o: dcmpsmk.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
  ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
@@ -978,6 +999,8 @@ dcmpsprt.o: dcmpsprt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -1050,6 +1073,7 @@ dcmpsprt.o: dcmpsprt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -1133,6 +1157,8 @@ dcmpsrcv.o: dcmpsrcv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1226,6 +1252,7 @@ dcmpsrcv.o: dcmpsrcv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
  ../include/dcmtk/dcmpstat/dvpsgal.h ../include/dcmtk/dcmpstat/dvpscul.h \
@@ -1276,6 +1303,8 @@ dcmpssnd.o: dcmpssnd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
index 92bd78931768a9bea406e24057c22b2a61bfcbdd..85a137e0e9cadb8892335c78cd90d26f0e38cfb1 100644 (file)
@@ -40,6 +40,8 @@ dcmpstat.o: dcmpstat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -108,6 +110,7 @@ dcmpstat.o: dcmpstat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dvpsovl.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsgll.h \
@@ -166,6 +169,8 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -238,6 +243,7 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -300,6 +306,7 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsdefine.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../../dcmsr/include/dcmtk/dcmsr/dsrposcn.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrtnant.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrdoctn.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrcodvl.h \
@@ -321,6 +328,7 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrimgse.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrwavvl.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrrtpl.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrctpl.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrsoprf.h \
@@ -361,6 +369,8 @@ dvpsab.o: dvpsab.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -425,6 +435,8 @@ dvpsabl.o: dvpsabl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -488,6 +500,8 @@ dvpsal.o: dvpsal.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -543,6 +557,8 @@ dvpsall.o: dvpsall.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -642,6 +658,7 @@ dvpsall.o: dvpsall.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsgl.h
 dvpscf.o: dvpscf.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -684,6 +701,8 @@ dvpscf.o: dvpscf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -732,6 +751,8 @@ dvpscu.o: dvpscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -801,6 +822,7 @@ dvpscu.o: dvpscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
 dvpscul.o: dvpscul.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -818,6 +840,8 @@ dvpscul.o: dvpscul.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -900,6 +924,8 @@ dvpsda.o: dvpsda.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -968,6 +994,7 @@ dvpsda.o: dvpsda.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsril.h ../include/dcmtk/dcmpstat/dvpstyp.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsri.h \
@@ -989,6 +1016,8 @@ dvpsdal.o: dvpsdal.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1085,6 +1114,7 @@ dvpsdal.o: dvpsdal.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsril.h ../include/dcmtk/dcmpstat/dvpsri.h
 dvpsfs.o: dvpsfs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1130,6 +1160,8 @@ dvpsfs.o: dvpsfs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1198,6 +1230,7 @@ dvpsfs.o: dvpsfs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -1273,6 +1306,8 @@ dvpsga.o: dvpsga.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
@@ -1345,6 +1380,7 @@ dvpsga.o: dvpsga.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsgr.h
 dvpsgal.o: dvpsgal.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1362,6 +1398,8 @@ dvpsgal.o: dvpsgal.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1461,6 +1499,7 @@ dvpsgal.o: dvpsgal.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsgr.h ../include/dcmtk/dcmpstat/dvpsri.h
 dvpsgl.o: dvpsgl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1505,6 +1544,8 @@ dvpsgl.o: dvpsgl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1573,6 +1614,7 @@ dvpsgl.o: dvpsgl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsdef.h
 dvpsgll.o: dvpsgll.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1590,6 +1632,8 @@ dvpsgll.o: dvpsgll.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1686,6 +1730,7 @@ dvpsgll.o: dvpsgll.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h ../include/dcmtk/dcmpstat/dvpsgal.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -1735,6 +1780,8 @@ dvpsgr.o: dvpsgr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1803,6 +1850,7 @@ dvpsgr.o: dvpsgr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h
@@ -1821,6 +1869,8 @@ dvpsgrl.o: dvpsgrl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1917,6 +1967,7 @@ dvpsgrl.o: dvpsgrl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h
 dvpshlp.o: dvpshlp.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1934,6 +1985,8 @@ dvpshlp.o: dvpshlp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2033,6 +2086,7 @@ dvpshlp.o: dvpshlp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dvpsib.o: dvpsib.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -2050,6 +2104,8 @@ dvpsib.o: dvpsib.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2145,6 +2201,7 @@ dvpsib.o: dvpsib.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -2176,6 +2233,8 @@ dvpsibl.o: dvpsibl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2272,6 +2331,7 @@ dvpsibl.o: dvpsibl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -2329,6 +2389,8 @@ dvpsmsg.o: dvpsmsg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2380,6 +2442,8 @@ dvpsov.o: dvpsov.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2448,6 +2512,7 @@ dvpsov.o: dvpsov.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsdef.h
 dvpsovl.o: dvpsovl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2465,6 +2530,8 @@ dvpsovl.o: dvpsovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2561,6 +2628,7 @@ dvpsovl.o: dvpsovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dvpspl.o: dvpspl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -2579,6 +2647,8 @@ dvpspl.o: dvpspl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2688,6 +2758,8 @@ dvpspl2.o: dvpspl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -2781,6 +2853,8 @@ dvpspll.o: dvpspll.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -2862,6 +2936,7 @@ dvpspll.o: dvpspll.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dvpspr.o: dvpspr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -2903,6 +2978,8 @@ dvpspr.o: dvpspr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmpstat/dvpspr.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -2981,6 +3058,8 @@ dvpsprt.o: dvpsprt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -3057,6 +3136,7 @@ dvpsprt.o: dvpsprt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -3099,6 +3179,8 @@ dvpsri.o: dvpsri.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3158,6 +3240,8 @@ dvpsril.o: dvpsril.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3225,6 +3309,8 @@ dvpsrs.o: dvpsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3287,6 +3373,8 @@ dvpsrsl.o: dvpsrsl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3387,6 +3475,8 @@ dvpssp.o: dvpssp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -3462,6 +3552,7 @@ dvpssp.o: dvpssp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -3547,6 +3638,8 @@ dvpsspl.o: dvpsspl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -3623,6 +3716,7 @@ dvpsspl.o: dvpsspl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -3664,6 +3758,8 @@ dvpssv.o: dvpssv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3734,6 +3830,8 @@ dvpssvl.o: dvpssvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3826,6 +3924,8 @@ dvpstat.o: dvpstat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3894,6 +3994,7 @@ dvpstat.o: dvpstat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dvpsovl.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsgll.h \
@@ -3970,6 +4071,8 @@ dvpstx.o: dvpstx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4038,6 +4141,7 @@ dvpstx.o: dvpstx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h
@@ -4056,6 +4160,8 @@ dvpstxl.o: dvpstxl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4152,6 +4258,7 @@ dvpstxl.o: dvpstxl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h
 dvpsvl.o: dvpsvl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4197,6 +4304,8 @@ dvpsvl.o: dvpsvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4265,6 +4374,7 @@ dvpsvl.o: dvpsvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmpstat/dvpssv.h ../include/dcmtk/dcmpstat/dvpsril.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h ../include/dcmtk/dcmpstat/dvpsri.h
@@ -4283,6 +4393,8 @@ dvpsvll.o: dvpsvll.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4379,6 +4491,7 @@ dvpsvll.o: dvpsvll.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dvpsvw.o: dvpsvw.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsvw.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -4424,6 +4537,8 @@ dvpsvw.o: dvpsvw.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -4490,6 +4605,7 @@ dvpsvw.o: dvpsvw.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dvpsvwl.o: dvpsvwl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -4537,6 +4653,8 @@ dvpsvwl.o: dvpsvwl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -4602,6 +4720,8 @@ dvsighdl.o: dvsighdl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
index cb75cd5c92f13efb9343708fa9a49fc67ab1a1c0..3bceee7e4109409dbee4470bc32d396fcdf99273 100644 (file)
@@ -39,6 +39,8 @@ msgserv.o: msgserv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
@@ -53,4 +55,18 @@ msgserv.o: msgserv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h
+ ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h \
+ ../../dcmnet/include/dcmtk/dcmnet/diutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
+ ../../dcmnet/include/dcmtk/dcmnet/lst.h \
+ ../../dcmnet/include/dcmtk/dcmnet/assoc.h
index 5a890133b91cbc399df85c3e06f0c7d82d4fbcdf..195147761420794aa9f6784f920becd86db8edaf 100644 (file)
@@ -58,6 +58,7 @@ END_EXTERN_C
 #include "dcmtk/dcmdata/dcuid.h"
 #include "dcmtk/dcmnet/dcompat.h"     /* compatability routines */
 #include "dcmtk/dcmnet/dul.h"
+#include "dcmtk/dcmnet/diutil.h"
 
 #define OFFIS_CONSOLE_APPLICATION "msgserv"
 
@@ -208,6 +209,10 @@ int main(int argc, char *argv[])
       nfound = select(s + 1, &fdset, NULL, NULL, &t);
 #endif
 
+      if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+      {
+          DU_logSelectResult(nfound);
+      }
 
       if (nfound > 0)
       {
index 1571d43618ca1eafe80ca13dd750b96c78b11e79..708bae4f28cf9432920fcf7f7328d2f9d72e8517 100644 (file)
@@ -15,6 +15,8 @@ dcmqridx.o: dcmqridx.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -87,6 +89,8 @@ dcmqrscp.o: dcmqrscp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -195,6 +199,8 @@ dcmqrti.o: dcmqrti.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/assoc.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
index fb93f90f6693c15d9c38ecbdd9cbef51c5224a5a..c6786680831fb1283677f566263ad443aabea880 100644 (file)
@@ -709,6 +709,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -757,6 +758,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
@@ -781,6 +783,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
+RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
 GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
 ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
 ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
@@ -966,6 +969,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1993-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1993-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 4605c41ff7fc5c072151dfb01a731a055d104c8f..77faaec9fcc24fee39e8e5a4cb4b171ffe46c3fe 100644 (file)
@@ -47,6 +47,8 @@ dcmqrcbf.o: dcmqrcbf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -123,6 +125,8 @@ dcmqrcbg.o: dcmqrcbg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -199,6 +203,8 @@ dcmqrcbm.o: dcmqrcbm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -275,6 +281,8 @@ dcmqrcbs.o: dcmqrcbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -319,6 +327,8 @@ dcmqrcnf.o: dcmqrcnf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -396,6 +406,8 @@ dcmqrdbi.o: dcmqrdbi.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
@@ -439,6 +451,8 @@ dcmqrdbs.o: dcmqrdbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -519,6 +533,8 @@ dcmqropt.o: dcmqropt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -593,6 +609,8 @@ dcmqrptb.o: dcmqrptb.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -661,6 +679,8 @@ dcmqrsrv.o: dcmqrsrv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -736,6 +756,8 @@ dcmqrtis.o: dcmqrtis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/assoc.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
index f555fbb056ed0627561b7f5d4126a6d174c47971..53424b854efda9aa59fffdab173aed43626efdf3 100644 (file)
@@ -2949,7 +2949,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::storeRequest (
                    (strcmp(SOPClassUID, UID_SpectaclePrescriptionReportStorage) == 0) ||
                    (strcmp(SOPClassUID, UID_MacularGridThicknessAndVolumeReportStorage) == 0) ||
                    (strcmp(SOPClassUID, UID_ImplantationPlanSRDocumentStorage) == 0) ||
-                   (strcmp(SOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) == 0))
+                   (strcmp(SOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) == 0) ||
+                   (strcmp(SOPClassUID, UID_AcquisitionContextSRStorage) == 0))
         {
             OFString string;
             OFString description = "unknown SR";
index 0c4353abcf4d14de52e7a356b5d9ec2c983c5698..f9700e931baa25fc8ec717bb98da192eead39e9a 100644 (file)
@@ -15,6 +15,8 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -108,13 +110,16 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
@@ -144,11 +149,14 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
@@ -156,8 +164,10 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
@@ -229,7 +239,7 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttsmds.h ../include/dcmtk/dcmrt/drtionpl.h \
  ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../include/dcmtk/dcmrt/seq/drticps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
  ../include/dcmtk/dcmrt/seq/drtlsds6.h \
index 36f427a80f463112f167ad8dc7371fba500e9589..94312475a46c2eba237339ce8fc53674b59b624c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -156,8 +156,8 @@ public:
     /** set automatically calculated histogram window.
      *  possibly active VOI LUT is implicitly disabled.
      *
-     ** @param  thresh  threshhold value specifying percentage of histogram border which
-     *                  shall be ignored (defaut: 5%).
+     ** @param  thresh  threshold value specifying percentage of histogram border which
+     *                  shall be ignored (default: 5%).
      *
      *  @return EC_Normal if successful, else an error code
      */
@@ -239,7 +239,7 @@ private:
      * Hide DRTImageIOD::read(). DicomImage() doesn't allow the dataset that was
      * used for loading the image to be deleted. Thus, read() cannot work.
      */
-    virtual OFCondition read(DcmItem &dataset)
+    virtual OFCondition read(DcmItem & /*dataset*/)
     {
         return EC_IllegalCall;
     }
index 43e40818e04488c58823d542b08ec4047bf4b97e..6f902871df554fa7cfac17b45f86a399c78a028b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdvhs.h"   // for DVHSequence
@@ -47,6 +48,7 @@
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtpsss.h"   // for PredecessorStructureSetSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrcs.h"    // for ROIContourSequence
 #include "dcmtk/dcmrt/seq/drtrdros.h"  // for RTDoseROISequence
@@ -501,6 +503,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentDate (0008,0023)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1663,6 +1672,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StereoPairsPresent (0022,0028)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStereoPairsPresent(OFString &value, const signed long pos = 0) const;
+
     /** get StructureSetDate (3006,0008)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1818,6 +1834,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -2118,6 +2146,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() const
         { return PredecessorStructureSetSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -2618,6 +2658,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentDate (0008,0023)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -3563,6 +3610,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StereoPairsPresent (0022,0028)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStereoPairsPresent(const OFString &value, const OFBool check = OFTrue);
+
     /** set StructureSetDate (3006,0008)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -3766,6 +3820,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -4045,6 +4103,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmIntegerString NumberOfFrames;
     /// FrameIncrementPointer (0028,0009) vr=AT, vm=1-n, type=1
     DcmAttributeTag FrameIncrementPointer;
+    /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3
+    DcmCodeString StereoPairsPresent;
 
     // --- OverlayPlaneModule (U) ---
 
@@ -4245,6 +4305,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index bf746cd6321b80c3a56ae3c6bc6f19e87560e594..3b7b1549a86f82bed7ff9034d0f5ee7bc0671318 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcbars.h"  // for ContrastBolusAdministrationRouteSequence
 #include "dcmtk/dcmrt/seq/drtbas.h"    // for ContrastBolusAgentSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
@@ -51,6 +52,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrwvms.h"  // for RealWorldValueMappingSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
@@ -524,6 +526,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentDate (0008,0023)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1916,6 +1925,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StereoPairsPresent (0022,0028)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getStereoPairsPresent(OFString &value, const signed long pos = 0) const;
+
     /** get StopTrim (0008,2143)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -2215,6 +2231,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContrastBolusAdministrationRouteSequence (0018,0014)
      *  @return reference to sequence element
      */
@@ -2563,6 +2591,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -3019,6 +3059,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentDate (0008,0023)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -4097,6 +4144,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StereoPairsPresent (0022,0028)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setStereoPairsPresent(const OFString &value, const OFBool check = OFTrue);
+
     /** set StopTrim (0008,2143)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -4352,6 +4406,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -4671,6 +4729,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmIntegerString NumberOfFrames;
     /// FrameIncrementPointer (0028,0009) vr=AT, vm=1-n, type=1
     DcmAttributeTag FrameIncrementPointer;
+    /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3
+    DcmCodeString StereoPairsPresent;
 
     // --- DeviceModule (U) ---
 
@@ -4871,6 +4931,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index d9acae79c6c3e945518a483801aa59d66f28cbc8..889397d402d37cf9e8792bc0996c794f59a01eaa 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -46,6 +47,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
@@ -373,6 +375,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1095,6 +1104,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1383,6 +1404,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1712,6 +1745,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2457,6 +2497,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2729,6 +2773,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index cf177b83c4891b172a5f260e6604c80cf7baf415..546f92c814813e86a9da950ddbb0f82f1dde104a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -23,6 +23,7 @@
 #include "dcmtk/dcmrt/seq/drtcdrs.h"   // for CalculatedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -45,6 +46,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
@@ -352,6 +354,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1058,6 +1067,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1322,6 +1343,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1680,6 +1713,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2383,6 +2423,10 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2642,6 +2686,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index a314f9a84501d341feb48eade34fbe9494759f0e..cc7ed760084ed87df25ac0a256a4fc18cd7a44a8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -24,6 +24,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -46,6 +47,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
@@ -406,6 +408,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1152,6 +1161,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1416,6 +1437,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1795,6 +1828,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2540,6 +2580,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2825,6 +2869,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index 2ba925a4483419dbced833016076e602c27c34ee..21948f8de74ec775d2ad3c0fe694ca591026585b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -42,6 +43,7 @@
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtpsss.h"   // for PredecessorStructureSetSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrcs.h"    // for ROIContourSequence
 #include "dcmtk/dcmrt/seq/drtrros.h"   // for RTROIObservationsSequence
@@ -165,6 +167,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFBool isClinicalTrialSeriesModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether FrameOfReferenceModule (U) is present.
+     *  By default, a module is reported as being present if at least one attribute
+     *  from this module has a non-empty value.
+     *  @param  complete  check for all mandatory attributes of this module if enabled
+     *  @return OFTrue if module is present, OFFalse otherwise
+     */
+    virtual OFBool isFrameOfReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether ApprovalModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -330,6 +340,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -365,6 +382,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getEthnicGroup(OFString &value, const signed long pos = 0) const;
 
+    /** get FrameOfReferenceUID (0020,0052)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getFrameOfReferenceUID(OFString &value, const signed long pos = 0) const;
+
     /** get GantryID (0018,1008)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -673,6 +697,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPixelPaddingValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get PositionReferenceIndicator (0020,1040)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getPositionReferenceIndicator(OFString &value, const signed long pos = 0) const;
+
     /** get QualityControlSubject (0010,0200)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1003,6 +1034,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1243,6 +1286,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() const
         { return PredecessorStructureSetSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1584,6 +1639,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -1619,6 +1681,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue);
 
+    /** set FrameOfReferenceUID (0020,0052)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setFrameOfReferenceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set GantryID (0018,1008)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1906,6 +1975,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPixelPaddingValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set PositionReferenceIndicator (0020,1040)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setPositionReferenceIndicator(const OFString &value, const OFBool check = OFTrue);
+
     /** set QualityControlSubject (0010,0200)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2280,6 +2356,10 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2422,6 +2502,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     /// PixelPaddingValue (0028,0120) vr=US/SS, vm=1, type=1C
     DcmUnsignedShort PixelPaddingValue;
 
+    // --- FrameOfReferenceModule (U) ---
+
+    /// FrameOfReferenceUID (0020,0052) vr=UI, vm=1, type=1
+    DcmUniqueIdentifier FrameOfReferenceUID;
+    /// PositionReferenceIndicator (0020,1040) vr=LO, vm=1, type=2
+    DcmLongString PositionReferenceIndicator;
+
     // --- StructureSetModule (M) ---
 
     /// StructureSetLabel (3006,0002) vr=SH, vm=1, type=1
@@ -2520,6 +2607,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index c5949741ce3f820862d70e3a5cc4db4e7980f119..5822e242300d507f9e44003f2f04aec6c0891a48 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
+#include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -42,6 +43,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
@@ -315,6 +317,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -974,6 +983,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1214,6 +1235,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1548,6 +1581,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2230,6 +2270,10 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2458,6 +2502,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index a2eb303eb58435e97a3de70ae1d399b6d78fce41..271dfb245df1f3a425b98f44830056fba0a22c7f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AssigningAgencyOrDepartmentCodeSequence (0040,003a)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 02314af74c336d2c177449c4cabf90906b1842a7..12211700dc1507c0773abb8008d91222997a3f5d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AdmittingDiagnosesCodeSequence (0008,1084)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 8fedfbefb8837d5d6764af24f3fd712417b8d7bb..bd799e36ec3eee4d06d90c08b33484a1071e0517 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AdditionalDrugSequence (0018,002a)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 7a1669e379b21995c34294acd8971937290d2985..af706b183d6c35a419e8abf39d08f06f8c11219b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6b2b72e33e5b853cbaf06f8d9376a10264b3e4cc..9f9fa998cf5dcdef6f95d8aabf818522783a2982 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a55b6b7c1e6533b77f1c513be6bd4f2038ab64ec..4d404cf1a8204178ace382434d0fca2f5361cdcf 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AssigningJurisdictionCodeSequence (0040,0039)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index a45f1e699b9c60e02dab408aaa71d8356ead5277..6b21868112a694e41b0ed2ba88d7f1760e7f2c5f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdditionalRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 #include "dcmtk/dcmrt/seq/drtporcs.h"  // for PurposeOfReferenceCodeSequence
 
 
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -168,8 +176,34 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
         /** get PurposeOfReferenceCodeSequence (0040,a170)
          *  @return reference to sequence element
          */
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -268,9 +323,9 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -286,10 +341,18 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
         /// PurposeOfReferenceCodeSequence (0040,a170) vr=SQ, vm=1, type=1
         DRTPurposeOfReferenceCodeSequence PurposeOfReferenceCodeSequence;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 3d05cd94d63f4be74629b48d524b0e5e51e91a8a..c1d420a83497dbe51db75bdb39384e298a977d8d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7dd6132f7994839bd23ab00bce9a94e1406ac687..a07e40ebf5c5fbcb562d493aea75825e95912e80 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index af3ae143de8ce0519f9a157cf1030464e16b63d8..2ca82efea2aba130b69191ee3b8b6e63c0da24a7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 93ca7c965b77610518263e3108532ccfcf8432a8..743c95180b7885d6c9fbe46c421ec6581ce16eb6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bca0b7940fb7cfd11752fb3f9cff24847492a63b..d6f992214bf57da2f040a9cc0d4ff9c3f6454b1e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1834ea5642f0038b7584b1dfd64520ad2295b435..6a9203b22b8011f32452dbf2316cbe8a3c1bbe80 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5af60c7f8883a3dcedd753816424b95f1c2e7240..62525029739a3329fc6b66d0b2ef06c188737828 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ContrastBolusAgentSequence (0018,0012)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 3f64028e310cf8499267f717950e00a5b35f8b7b..0d0162475ba1490ae3d14f80ced16452305c04d5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 60f82932ce941aa388c9e94b7408b345cf7c879a..a5168096f2d0fbc579ccd34d69ca7108787558f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 005bca643c9d7538048d06534fa87dfdcde4e6c9..c0046f277d75de47460a30792b696c19cf78aa90 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f0c669e02a5757262a4b7ec2c4940fdd71cdd8e6..b6a15af07329f8f6af2c03013837647182ade6c4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d47ffc97ae5fd3551b3c9a42c41d16bbd8949113..acadc81ca558f65286679151817dabf893d20fe5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b0b3671bbfc9856f8ab6e8f186d3620075b66722..05d8c5abb5a8d059869d841bb545dbb9ef495b3b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a192fbbdfa1a7d04b35dc2668d03e7b2200d8615..e23c7110b2736aeba7b3d498071c11dde5169968 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index e165dc22b7c53c81cc20a464b61f7c24d21d29cd..b3ca61b35ab900b4a83438bf64baac6b478befa3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6a3efa559eeff1ba9c1d46abcce31d5988f926bd..8cc3222df2fdf3d2712cdda8b5fc5f5fb486e399 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index e39927926218e85c98f2368f8b8e21407219bf6f..52a1c540c4a3127e109bd2004ff3ce7c230ee15c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for BreedRegistryCodeSequence (0010,2296)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index bf9c80783c5b434f8a5e97c9737535f0841cd927..1926e8145004ec9cd1ae6651bdb52830aeabe99d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7878fcdd603c30c0b77c033c6c0ab73ec877782d..bb5998fcca0e94767bade478b9a35c04537b18d7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ae710b83d0cde831a8afe965aad5aa59d3572cb9..a585e4d76d7c51192164e28d282705f549cb33fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
new file mode 100644 (file)
index 0000000..1ef3ef9
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTBlockSlabSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTBSS_H
+#define DRTBSS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for BlockSlabSequence (300a,0441)
+ */
+class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockSlabNumber (300a,0443)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockSlabNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get BlockSlabThickness (300a,0442)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockSlabThickness(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockSlabThickness (300a,0442)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockSlabThickness(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockSlabNumber (300a,0443)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockSlabNumber(const Uint16 value, const unsigned long pos = 0);
+
+        /** set BlockSlabThickness (300a,0442)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockSlabThickness(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// BlockSlabNumber (300a,0443) vr=US, vm=1, type=1
+        DcmUnsignedShort BlockSlabNumber;
+        /// BlockSlabThickness (300a,0442) vr=DS, vm=1, type=3
+        DcmDecimalString BlockSlabThickness;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTBlockSlabSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTBlockSlabSequence(const DRTBlockSlabSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTBlockSlabSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTBlockSlabSequence &operator=(const DRTBlockSlabSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 04ecaf535fa65f84abc6fd2ef2db53fac308d5aa..0084c67b6b18ad2fcacbc5ac25f7a40481e66160 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -111,6 +111,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition getAverageBeamDosePointSSD(Float32 &value, const unsigned long pos = 0) const;
 
+        /** get AverageBeamDosePointSourceToExternalContourSurfaceDistance (300a,0131)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAverageBeamDosePointSourceToExternalContourSurfaceDistance(Float32 &value, const unsigned long pos = 0) const;
+
         /** get CumulativeMetersetWeight (300a,0134)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -162,6 +169,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition setAverageBeamDosePointSSD(const Float32 value, const unsigned long pos = 0);
 
+        /** set AverageBeamDosePointSourceToExternalContourSurfaceDistance (300a,0131)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAverageBeamDosePointSourceToExternalContourSurfaceDistance(const Float32 value, const unsigned long pos = 0);
+
         /** set CumulativeMetersetWeight (300a,0134)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -187,6 +201,8 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
         DcmFloatingPointSingle AverageBeamDosePointEquivalentDepth;
         /// AverageBeamDosePointSSD (300a,008f) vr=FL, vm=1, type=2C
         DcmFloatingPointSingle AverageBeamDosePointSSD;
+        /// AverageBeamDosePointSourceToExternalContourSurfaceDistance (300a,0131) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle AverageBeamDosePointSourceToExternalContourSurfaceDistance;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=1
         DcmDecimalString CumulativeMetersetWeight;
         /// ReferencedControlPointIndex (300c,00f0) vr=IS, vm=1, type=1C
index 4a0facaa18b8442c23e226ffaed5f19f9f915fd4..b4a8b961df0102f90b1719347366bcd4a636ad94 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtads.h"    // for AdditionalDrugSequence
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ContrastBolusAdministrationRouteSequence (0018,0014)
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -168,6 +176,20 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
         /** get AdditionalDrugSequence (0018,002a)
@@ -182,6 +204,18 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         const DRTAdditionalDrugSequence &getAdditionalDrugSequence() const
             { return AdditionalDrugSequence; }
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -270,9 +325,9 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         DRTAdditionalDrugSequence AdditionalDrugSequence;
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -288,8 +343,16 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 50d52e3282e0be4d0de6b845da26cb2498c253dd..dbc3c4fd3973bd465b3ce4566a87a7bd96b12d85 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ConceptCodeSequence (0040,a168)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index e7ca8f090aa70a656f4b49e47e99cbb732d5e50a..d9546ee15af7d30c915b257391a974d594eb4da9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2ba99a608e62e46b37e003d9f2aa0ed9daa6d95c..e03002a09d7ae80603323d7c53d61455f4dd4820 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c15d103fc5e01dea402c81ea216e6eec07ef7429..4ff68b033a9d8cae4b52f547142e032cae2835b7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d577e33e9ba397f5255d1f0d938418b8be0b9eca..a6138170a2de9914896b53a3014c5b51b0d5f3d6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f96f3e8861452bf437b0a76c5fcd766a4935db10..014d4a43201f6150952e5bc1ff261014f7658c85 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 23c626bbf4194bb42d4025be21eef4f579bfb622..2b6ca66015ea9f65f19697fb04963b04584c9f6f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8f1a2266c6d5d3a01422c5376619485d083d43ee..d2fe4185fee8fe741c940a6983879dc44eb6a406 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ConceptNameCodeSequence (0040,a043)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index d8d2c51206d42ff3296aaa6ef19e1af496a6ba2d..b3165ac0a71491a543adedfbc71e8fbc489c3b02 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 49c013c3564bddc6eb558b117f9fe88fc5be17c2..2f2721813faea7ce9cfabf4c33c0b94b565e3feb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
new file mode 100644 (file)
index 0000000..76052a2
--- /dev/null
@@ -0,0 +1,398 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTConsultingPhysicianIdentificationSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTCPIS_H
+#define DRTCPIS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtics.h"    // for InstitutionCodeSequence
+#include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
+
+
+/** Interface class for ConsultingPhysicianIdentificationSequence (0008,009d)
+ */
+class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get InstitutionAddress (0008,0081)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionName (0008,0080)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
+
+        /** get PersonAddress (0040,1102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
+
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
+        /** get PersonTelephoneNumbers (0040,1103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonTelephoneNumbers(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get InstitutionCodeSequence (0008,0082)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionCodeSequence &getInstitutionCodeSequence()
+            { return InstitutionCodeSequence; }
+
+        /** get InstitutionCodeSequence (0008,0082)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const
+            { return InstitutionCodeSequence; }
+
+        /** get PersonIdentificationCodeSequence (0040,1101)
+         *  @return reference to sequence element
+         */
+        DRTPersonIdentificationCodeSequence &getPersonIdentificationCodeSequence()
+            { return PersonIdentificationCodeSequence; }
+
+        /** get PersonIdentificationCodeSequence (0040,1101)
+         *  @return const reference to sequence element
+         */
+        const DRTPersonIdentificationCodeSequence &getPersonIdentificationCodeSequence() const
+            { return PersonIdentificationCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set InstitutionAddress (0008,0081)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionName (0008,0080)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PersonAddress (0040,1102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PersonTelephoneNumbers (0040,1103)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelephoneNumbers(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
+        DcmShortText InstitutionAddress;
+        /// InstitutionCodeSequence (0008,0082) vr=SQ, vm=1, type=1C
+        DRTInstitutionCodeSequence InstitutionCodeSequence;
+        /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C
+        DcmLongString InstitutionName;
+        /// PersonAddress (0040,1102) vr=ST, vm=1, type=3
+        DcmShortText PersonAddress;
+        /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
+        DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
+        /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
+        DcmLongString PersonTelephoneNumbers;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTConsultingPhysicianIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTConsultingPhysicianIdentificationSequence(const DRTConsultingPhysicianIdentificationSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTConsultingPhysicianIdentificationSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTConsultingPhysicianIdentificationSequence &operator=(const DRTConsultingPhysicianIdentificationSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 7c0f9e4470d1f102fbce46e719aa4aaf616eb953..996ace142c9834b64860b77b8ab8c0e2efbebe3a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -157,6 +157,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition getDoseRateSet(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get ExternalContourEntryPoint (300a,0133)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getExternalContourEntryPoint(Float32 &value, const unsigned long pos = 0) const;
+
         /** get GantryAngle (300a,011e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -247,6 +254,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition getPatientSupportRotationDirection(OFString &value, const signed long pos = 0) const;
 
+        /** get SourceToExternalContourDistance (300a,0132)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToExternalContourDistance(Float32 &value, const unsigned long pos = 0) const;
+
         /** get SourceToSurfaceDistance (300a,0130)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -473,6 +487,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition setDoseRateSet(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ExternalContourEntryPoint (300a,0133)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=3
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setExternalContourEntryPoint(const Float32 value, const unsigned long pos = 0);
+
         /** set GantryAngle (300a,011e)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -529,6 +550,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition setPatientSupportRotationDirection(const OFString &value, const OFBool check = OFTrue);
 
+        /** set SourceToExternalContourDistance (300a,0132)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToExternalContourDistance(const Float32 value, const unsigned long pos = 0);
+
         /** set SourceToSurfaceDistance (300a,0130)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -630,6 +658,8 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
         DcmDecimalString CumulativeMetersetWeight;
         /// DoseRateSet (300a,0115) vr=DS, vm=1, type=3
         DcmDecimalString DoseRateSet;
+        /// ExternalContourEntryPoint (300a,0133) vr=FL, vm=3, type=3
+        DcmFloatingPointSingle ExternalContourEntryPoint;
         /// GantryAngle (300a,011e) vr=DS, vm=1, type=1C
         DcmDecimalString GantryAngle;
         /// GantryPitchAngle (300a,014a) vr=FL, vm=1, type=3
@@ -650,6 +680,8 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
         DRTReferencedDoseReferenceSequenceInRTBeamsModule ReferencedDoseReferenceSequence;
         /// ReferencedDoseSequence (300c,0080) vr=SQ, vm=1, type=1C
         DRTReferencedDoseSequence ReferencedDoseSequence;
+        /// SourceToExternalContourDistance (300a,0132) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToExternalContourDistance;
         /// SourceToSurfaceDistance (300a,0130) vr=DS, vm=1, type=3
         DcmDecimalString SourceToSurfaceDistance;
         /// SurfaceEntryPoint (300a,012e) vr=DS, vm=3, type=3
index 42fe9b07af5380be1dc3a2fc2c7170b2fd77f997..1e90545ea2ab7daf971837f359df5cbf3970b105 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dbbf746e9702baddd79f385896f5f5de0c003050..e57aa0e50f006c4888249820c537579a844f7771 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c8b3114c7bb4809b52e0ad8aacbb7caf26f9cccc..273d59e24eb66cc32bc8bb1f2529ee1dda916055 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d43fa1251bf47c666501e1970f04d94b8d96a2e6..279ba04239761d31aed4cc1f75bbc26a8d1a19a9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 279e9389d6cc0f0c91db40439d3b8d5a2f209bde..5368bc55f800f000ff3d08746e3d6b051a27608d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ChannelSourceSequence (003a,0208)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index e8f4977a9713f94fa152bee6df7114bd0fdc0e92..49f3811f602a5e80c0984deedd758fe143d590c7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DerivationCodeSequence (0008,9215)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
new file mode 100644 (file)
index 0000000..9e66cb6
--- /dev/null
@@ -0,0 +1,318 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTDeidentificationActionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTDIAS_H
+#define DRTDIAS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for DeidentificationActionSequence (0008,0305)
+ */
+class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get DeidentificationAction (0008,0307)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeidentificationAction(OFString &value, const signed long pos = 0) const;
+
+        /** get IdentifyingPrivateElements (0008,0306)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getIdentifyingPrivateElements(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set DeidentificationAction (0008,0307)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeidentificationAction(const OFString &value, const OFBool check = OFTrue);
+
+        /** set IdentifyingPrivateElements (0008,0306)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setIdentifyingPrivateElements(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// DeidentificationAction (0008,0307) vr=CS, vm=1, type=1
+        DcmCodeString DeidentificationAction;
+        /// IdentifyingPrivateElements (0008,0306) vr=US, vm=1-n, type=1
+        DcmUnsignedShort IdentifyingPrivateElements;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTDeidentificationActionSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTDeidentificationActionSequence(const DRTDeidentificationActionSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTDeidentificationActionSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTDeidentificationActionSequence &operator=(const DRTDeidentificationActionSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 7bc7c7df0ec92299903fec759e1ee446cd5dbd78..40d30cb9f52ffc3c1cfe01eebb0dd45c0ca6e734 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DeidentificationMethodCodeSequence (0012,0064)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index a62626e8a74fd4942c305991bc4542aa812b7767..9bca717c4f4934681c30c77bd85305e9da8709e1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7f1d796c0be158781fda58b76c3a944655a543fd..ca2f907585cc38d5aa1858aa015a748f50126b03 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b2669c31f0d5529f67cc8f544bd9a68f65a883d3..254a86f3ee10154047de7d8b581146fc44d6ce32 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 4ed6395473a2e7aead8a651114945757e7c4d2e4..c1c1a547551870f6031dad97a88e660299f46031 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DeviceSequence (0050,0010)
@@ -244,6 +245,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition getInterMarkerDistance(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get Manufacturer (0008,0070)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -265,6 +273,34 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -393,6 +429,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition setInterMarkerDistance(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set Manufacturer (0008,0070)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -414,6 +457,20 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -421,9 +478,9 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -453,14 +510,22 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
         DcmLongString DeviceSerialNumber;
         /// DeviceVolume (0050,0018) vr=DS, vm=1, type=3
         DcmDecimalString DeviceVolume;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
         /// InterMarkerDistance (0050,0019) vr=DS, vm=1, type=3
         DcmDecimalString InterMarkerDistance;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// Manufacturer (0008,0070) vr=LO, vm=1, type=3
         DcmLongString Manufacturer;
         /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
         DcmLongString ManufacturerModelName;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index f0a9066b899218aefe8791a2060f7d9c21875db1..258b1b9c98f8e20c469f480a7cecb5e4ba58019a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DigitalSignaturePurposeCodeSequence (0400,0401)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index cc0a9849cbf3a13addd5fdb766f137c2e55cbd24..6def9ee7dbfb1e325afffc8c2e6453660154b982 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index da915c9fd516d378763f0aa91fdda9020ac96437..ec4b5ce0ababec3d4b5d951d174c7c074388e305 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3065b72467ba76fdca499d177f39bba5e8000b9a..4bffe6dae8e9583820fee8f8acae86a2a22062f2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index da128b230c2be3dd35aa13f867bd086ecb2f61e7..ca2279e0eb091c76205a8b005f028e0d1bc019af 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
new file mode 100644 (file)
index 0000000..0bedc2c
--- /dev/null
@@ -0,0 +1,382 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTEquivalentCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTECS_H
+#define DRTECS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for EquivalentCodeSequence (0008,0121)
+ */
+class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTEquivalentCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTEquivalentCodeSequence(const DRTEquivalentCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTEquivalentCodeSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTEquivalentCodeSequence &operator=(const DRTEquivalentCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 962bae772fba62f5f6b3ce51822360bd1a7b49a4..91d48518b34e9c2af02695d13101677a591c8f0f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f395854da7f9e562bc40b2a4cb69f053979417a7..3958b4e531d6e10f9754a92df907bd593d297484 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2cdce0b08cba32dc61eba1620cd5d22393285065..c0b838ae7909664d2423129f9ab337ac46de433d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1ebd6afc245a095162b83d477dccc8c3afd35a71..271ad229d6977197151f5d45ba59f72c78ace988 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index eb8aadcd0a819ba18a39d6882e52ac63ec9de5b8..2d51366d95011859e344a0dc5a2d054948cea716 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bd0235a3cf70b8acf6180c83d34b9d912817e544..8f86405cc2e565fd5a99efa8e9c2cbef8230fbcb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8994fdd61b4733efeb45b0d776dfae690d1d6d0d..ae70ff568bb1bac953afcc322c8360b601c28409 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 436ce96648503058ab64295049d37106d42cb671..996eb8bf2fff712dc8d8de4d641e78283eebd983 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTGeneralAccessorySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 56fb97843cb8b81316124940681ab8f042c2580e..0b84aa3c395f0f5a6ce2b2235e6ddab757dcb68f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 870e1eb09eccf7f22a231913bcab881772e08ee5..3426c48a733d0b852c0fc23bb6ff4e4e4489b7f2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b055948a395e441a2313ab257608de046f3d31d2..d3c22e6251fff2bf77c9792de34c5c35eed61992 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1cdc7c0243ca4426015a1ef8a8041276acb60f6c..253673f898cbe17fb83795b1646b21fc2802ec5e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 295adb71e03a6c1382bf08654ef3e02c4903bc48..d1cf983fef4687e9353bdf09f5189650136b83f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtbss.h"    // for BlockSlabSequence
 
 
 /** Interface class for IonBlockSequence (300a,03a6)
@@ -208,6 +209,34 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
          */
         OFCondition getMaterialID(OFString &value, const signed long pos = 0) const;
 
+        /** get NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfBlockSlabItems(OFString &value, const signed long pos = 0) const;
+
+        /** get NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get BlockSlabSequence (300a,0441)
+         *  @return reference to sequence element
+         */
+        DRTBlockSlabSequence &getBlockSlabSequence()
+            { return BlockSlabSequence; }
+
+        /** get BlockSlabSequence (300a,0441)
+         *  @return const reference to sequence element
+         */
+        const DRTBlockSlabSequence &getBlockSlabSequence() const
+            { return BlockSlabSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set AccessoryCode (300a,00f9)
@@ -294,6 +323,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
          */
         OFCondition setMaterialID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfBlockSlabItems(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -313,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
         DcmIntegerString BlockNumber;
         /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=1
         DcmIntegerString BlockNumberOfPoints;
+        /// BlockSlabSequence (300a,0441) vr=SQ, vm=1, type=1C
+        DRTBlockSlabSequence BlockSlabSequence;
         /// BlockThickness (300a,0100) vr=DS, vm=1, type=1
         DcmDecimalString BlockThickness;
         /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3
@@ -323,6 +361,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
         DcmFloatingPointSingle IsocenterToBlockTrayDistance;
         /// MaterialID (300a,00e1) vr=SH, vm=1, type=2
         DcmShortString MaterialID;
+        /// NumberOfBlockSlabItems (300a,0440) vr=IS, vm=1, type=3
+        DcmIntegerString NumberOfBlockSlabItems;
 
     };
 
index c350fce28c3141edd435e5c8f3bed39b06ab3661..105ab416fd080086c899ce3f554cc63dc9897945 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6fc504c8259790e4b6bf71c43f2c47c4c0bf1655..5cd017c979b8689d0e0a222bcc0763663b58c650 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 03e3ed69e1d04a3a8eb6d6db58b2e2fa9abc0bce..e13581a947ee839e6b6c264ad3cada47898b5627 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -145,6 +145,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition getCumulativeMetersetWeight(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get ExternalContourEntryPoint (300a,0133)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getExternalContourEntryPoint(Float32 &value, const unsigned long pos = 0) const;
+
         /** get GantryAngle (300a,011e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -520,6 +527,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition setCumulativeMetersetWeight(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ExternalContourEntryPoint (300a,0133)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=3
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setExternalContourEntryPoint(const Float32 value, const unsigned long pos = 0);
+
         /** set GantryAngle (300a,011e)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -717,6 +731,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
         DcmIntegerString ControlPointIndex;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=2
         DcmDecimalString CumulativeMetersetWeight;
+        /// ExternalContourEntryPoint (300a,0133) vr=FL, vm=3, type=3
+        DcmFloatingPointSingle ExternalContourEntryPoint;
         /// GantryAngle (300a,011e) vr=DS, vm=1, type=1C
         DcmDecimalString GantryAngle;
         /// GantryPitchAngle (300a,014a) vr=FL, vm=1, type=2C
index c97c606ed99f27c119aa703803087bdd4187bd2c..653883f2a7529ee6c285e61bb74f94f3457e18a4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for InstitutionCodeSequence (0008,0082)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 19bdc23c5506112bfa6d5ddbd02b301d34749093..de08f191d57dcb5233f353f867b69cd932b83055 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 648d59d0a595d55b37309e7eb21dffa9b3c5e944..60405a4c4c0a9ef8d08564d25fb3e23ce95e7f8e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5fc7c21e555e5ae932ef3bea70de422417b8a9d1..0cd39696f862a7cfab2792f522e7871d490f204d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 18e2aec2eaefe3365c137cb793398ed0722ab4fa..bc19b3eb7c906adb6fcbb3b9d359c64f0a08b49b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 41b526d8e0b50dda59b37898a450fd072a24e2fb..957209a9cb6b872e9c3f5e51cfdf3529475f0097 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a7528f9e9123a750d3ba0e80f26eb701fc8fe6fe..fb5df8b0d6343616b6312d565f9df221d5dd0d1a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8f76f8e9ad82ce07f25c1a3eaaac017f1a100701..5e4800c4ec6bea2983452f23a0033b60ad3320c9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 217f2c7877f55741e307b22cf562a87b445ae0de..0bd66a70b6b8c03e1d8585f7172bb76d8867d8b8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2eb33309b84792895e43ea6868aabb3d411087f9..45ec9aa980436b472c17f02e38edeb4b82b07096 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 62ea3d33ccc8a3c91a25d28a946c2c9e476dfad8..4f57af6c1573f772c187f20f751d8c92158744ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 38ffb0f57f5d3ef2f33a6b8e19cc6f1ab7d3a1a0..9ebcc72763b35d609ba792bdcb305268395ad45f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 10abeac8cba76b1909b07688babd80f3a4d88879..040061c5a9f81cabfccb83d94a4800b9d4007095 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6470bc6f555ab10c442e69b8b8efa46d15b0fba3..4b6cd5059083b056f5bdf1473a8efafdc3844f93 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 15164f68ab202b2494580c5c071ece89662f1c59..3fab93e0b735115e1d79597377e8b7cf76cd84f1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 85b1217aaf9a2a790d757414f87bd68f503da3cd..8cb09f28f84dde2a17fab1cf8d375e69aba42ef7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 9f5dc942f1cd75f539618887e00179ab29069211..586f153a27a199446e26ca9443c8423bf0883c26 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5e7dfe37d0c9de482b5dc562ba3ecd33a8b225e9..6f73d7218f48f9e675a3a4e8d84321f82f28991b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for MeasurementUnitsCodeSequence (0040,08ea)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 83cba3bfa8b2d620c42543275a000faba34c01e4..b0de7e0e249c9eb30e68be5bee3732fa127f9515 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 9091837ca645c89bf13afa195c9f81088ba30186..68c33b91d1cf90c20801458f6a0e069d6656f250 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -169,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @param  value  value to be set (possibly multi-valued) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
index 2aeeeb6bd80db1d3552e4e0d32957c673885889c..c1f068f8852134c488fb63e90d068251a0cd870c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5571074694364bcb8b274e7a0784a07ece05e32f..eee419e02ca88dd206f5ed5b88a7aaa1f266dd21 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5edfd0e21e6d53fee89a597ad863eff8047f8ec6..a044d0227093cd0e84e9f2d027d41aad3eaaaa15 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PatientBreedCodeSequence (0010,2293)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 7e036ae3b0cf2f1b06837b9616ef4b2b692e8e49..06942a6bb8c7761d8fb7d70fabf9e40fdf08db34 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ProcedureCodeSequence (0008,1032)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 9bbc1a75b7ba1b9230851e63e3ac5b48db508944..db5baa5162270ef67e4e7ddbed68db57a1ec0f84 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
new file mode 100644 (file)
index 0000000..7cbca8a
--- /dev/null
@@ -0,0 +1,367 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTPrivateDataElementCharacteristicsSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTPDECS_H
+#define DRTPDECS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtdias.h"   // for DeidentificationActionSequence
+
+
+/** Interface class for PrivateDataElementCharacteristicsSequence (0008,0300)
+ */
+class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get BlockIdentifyingInformationStatus (0008,0303)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockIdentifyingInformationStatus(OFString &value, const signed long pos = 0) const;
+
+        /** get NonidentifyingPrivateElements (0008,0304)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNonidentifyingPrivateElements(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get PrivateCreatorReference (0008,0302)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPrivateCreatorReference(OFString &value, const signed long pos = 0) const;
+
+        /** get PrivateGroupReference (0008,0301)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPrivateGroupReference(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get DeidentificationActionSequence (0008,0305)
+         *  @return reference to sequence element
+         */
+        DRTDeidentificationActionSequence &getDeidentificationActionSequence()
+            { return DeidentificationActionSequence; }
+
+        /** get DeidentificationActionSequence (0008,0305)
+         *  @return const reference to sequence element
+         */
+        const DRTDeidentificationActionSequence &getDeidentificationActionSequence() const
+            { return DeidentificationActionSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set BlockIdentifyingInformationStatus (0008,0303)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockIdentifyingInformationStatus(const OFString &value, const OFBool check = OFTrue);
+
+        /** set NonidentifyingPrivateElements (0008,0304)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNonidentifyingPrivateElements(const Uint16 value, const unsigned long pos = 0);
+
+        /** set PrivateCreatorReference (0008,0302)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPrivateCreatorReference(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PrivateGroupReference (0008,0301)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPrivateGroupReference(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// BlockIdentifyingInformationStatus (0008,0303) vr=CS, vm=1, type=1
+        DcmCodeString BlockIdentifyingInformationStatus;
+        /// DeidentificationActionSequence (0008,0305) vr=SQ, vm=1, type=3
+        DRTDeidentificationActionSequence DeidentificationActionSequence;
+        /// NonidentifyingPrivateElements (0008,0304) vr=US, vm=1-n, type=1C
+        DcmUnsignedShort NonidentifyingPrivateElements;
+        /// PrivateCreatorReference (0008,0302) vr=LO, vm=1, type=1
+        DcmLongString PrivateCreatorReference;
+        /// PrivateGroupReference (0008,0301) vr=US, vm=1, type=1
+        DcmUnsignedShort PrivateGroupReference;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTPrivateDataElementCharacteristicsSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTPrivateDataElementCharacteristicsSequence(const DRTPrivateDataElementCharacteristicsSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTPrivateDataElementCharacteristicsSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTPrivateDataElementCharacteristicsSequence &operator=(const DRTPrivateDataElementCharacteristicsSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 517b2ecda794bc6799d1a2e66df94d3f6132584c..6a2c74419ebf2a4aeda07afe9523c415492bd535 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2424ab3ccd27ea9343c65588938fd3cfcb843320..183791493ef2daf312cffea83ccba9bcee5d4b2e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PersonIdentificationCodeSequence (0040,1101)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index c218d0e716d093723a40470eba952e22f1d6aef4..3f60799ad0bffeedb5e78dfe5f720a050f41638b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PurposeOfReferenceCodeSequence (0040,a170)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index bf19f16d42c80fcf39549a83e17eeea49e04119f..c320ab3d0b33121d74d4335e5c37e57aeac1de6a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -169,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @param  value  value to be set (possibly multi-valued) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
index 03a6d40c93977f290067a8cb9994078997953b0a..61d23144e86e5ea763ea4c621044009d43566809 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 #include "dcmtk/dcmrt/seq/drtpcxs.h"   // for ProtocolContextSequence
 
 
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -168,8 +176,34 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
         /** get ProtocolContextSequence (0040,0440)
          *  @return reference to sequence element
          */
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -268,9 +323,9 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -286,10 +341,18 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
         /// ProtocolContextSequence (0040,0440) vr=SQ, vm=1, type=3
         DRTProtocolContextSequence ProtocolContextSequence;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index a5607935f18ad73419e103fa878a3ce5063248fe..77a56c7d43fae31e2b4bc780e6f66e56e8abe382 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -169,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @param  value  value to be set (possibly multi-valued) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
index 6f4ba682128cfeccca72f18b50ac0c482f37caf6..4e449dda2f901e74db9fe01bfe21750423a88427 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PatientSpeciesCodeSequence (0010,2202)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 46cb67997c61bfc9c216183ba397d9f789cc7033..4b782662a880ad9c3c7b50bfd29f65a8b0d3c88c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PatientSizeCodeSequence (0010,1021)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 541893b7a409fe5a0f748600f5aa84c2077e8e2f..8686840944cb9de8e20d30864b9026fd7098f645 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 91b1607263df85a72060c5594b041d15659b8c33..2d03e6c0b25532e41543d767f96abb32b40e6ea1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6926f5a09015434606e017b346d77f16c54ddb8a..b0ec5873555308d6df1d112366db70e045bb8519 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
new file mode 100644 (file)
index 0000000..510cac7
--- /dev/null
@@ -0,0 +1,537 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTQuantityDefinitionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTQDS_H
+#define DRTQDS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtccs.h"    // for ConceptCodeSequence
+#include "dcmtk/dcmrt/seq/drtcncs.h"   // for ConceptNameCodeSequence
+#include "dcmtk/dcmrt/seq/drtmucs.h"   // for MeasurementUnitsCodeSequence
+#include "dcmtk/dcmrt/seq/drtrsos.h"   // for ReferencedSOPSequence
+
+
+/** Interface class for QuantityDefinitionSequence (0040,9220)
+ */
+class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get Date (0040,a121)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDate(OFString &value, const signed long pos = 0) const;
+
+        /** get DateTime (0040,a120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDateTime(OFString &value, const signed long pos = 0) const;
+
+        /** get FloatingPointValue (0040,a161)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFloatingPointValue(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get NumericValue (0040,a30a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumericValue(OFString &value, const signed long pos = 0) const;
+
+        /** get NumericValue (0040,a30a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumericValue(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get NumericValue (0040,a30a)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumericValue(OFVector<Float64> &value) const;
+
+        /** get PersonName (0040,a123)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonName(OFString &value, const signed long pos = 0) const;
+
+        /** get RationalDenominatorValue (0040,a163)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRationalDenominatorValue(Uint32 &value, const unsigned long pos = 0) const;
+
+        /** get RationalNumeratorValue (0040,a162)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRationalNumeratorValue(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get TextValue (0040,a160)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTextValue(OFString &value, const signed long pos = 0) const;
+
+        /** get Time (0040,a122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTime(OFString &value, const signed long pos = 0) const;
+
+        /** get UID (0040,a124)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ValueType (0040,a040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getValueType(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ConceptCodeSequence (0040,a168)
+         *  @return reference to sequence element
+         */
+        DRTConceptCodeSequence &getConceptCodeSequence()
+            { return ConceptCodeSequence; }
+
+        /** get ConceptCodeSequence (0040,a168)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptCodeSequence &getConceptCodeSequence() const
+            { return ConceptCodeSequence; }
+
+        /** get ConceptNameCodeSequence (0040,a043)
+         *  @return reference to sequence element
+         */
+        DRTConceptNameCodeSequence &getConceptNameCodeSequence()
+            { return ConceptNameCodeSequence; }
+
+        /** get ConceptNameCodeSequence (0040,a043)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptNameCodeSequence &getConceptNameCodeSequence() const
+            { return ConceptNameCodeSequence; }
+
+        /** get MeasurementUnitsCodeSequence (0040,08ea)
+         *  @return reference to sequence element
+         */
+        DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence()
+            { return MeasurementUnitsCodeSequence; }
+
+        /** get MeasurementUnitsCodeSequence (0040,08ea)
+         *  @return const reference to sequence element
+         */
+        const DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence() const
+            { return MeasurementUnitsCodeSequence; }
+
+        /** get ReferencedSOPSequence (0008,1199)
+         *  @return reference to sequence element
+         */
+        DRTReferencedSOPSequence &getReferencedSOPSequence()
+            { return ReferencedSOPSequence; }
+
+        /** get ReferencedSOPSequence (0008,1199)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedSOPSequence &getReferencedSOPSequence() const
+            { return ReferencedSOPSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set Date (0040,a121)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDate(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DateTime (0040,a120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDateTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set FloatingPointValue (0040,a161)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setFloatingPointValue(const Float64 value, const unsigned long pos = 0);
+
+        /** set NumericValue (0040,a30a)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumericValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PersonName (0040,a123)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RationalDenominatorValue (0040,a163)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRationalDenominatorValue(const Uint32 value, const unsigned long pos = 0);
+
+        /** set RationalNumeratorValue (0040,a162)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRationalNumeratorValue(const Sint32 value, const unsigned long pos = 0);
+
+        /** set TextValue (0040,a160)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTextValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set Time (0040,a122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set UID (0040,a124)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ValueType (0040,a040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setValueType(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ConceptCodeSequence (0040,a168) vr=SQ, vm=1, type=1C
+        DRTConceptCodeSequence ConceptCodeSequence;
+        /// ConceptNameCodeSequence (0040,a043) vr=SQ, vm=1, type=1
+        DRTConceptNameCodeSequence ConceptNameCodeSequence;
+        /// Date (0040,a121) vr=DA, vm=1, type=1C
+        DcmDate Date;
+        /// DateTime (0040,a120) vr=DT, vm=1, type=1C
+        DcmDateTime DateTime;
+        /// FloatingPointValue (0040,a161) vr=FD, vm=1-n, type=1C
+        DcmFloatingPointDouble FloatingPointValue;
+        /// MeasurementUnitsCodeSequence (0040,08ea) vr=SQ, vm=1, type=1C
+        DRTMeasurementUnitsCodeSequence MeasurementUnitsCodeSequence;
+        /// NumericValue (0040,a30a) vr=DS, vm=1-n, type=1C
+        DcmDecimalString NumericValue;
+        /// PersonName (0040,a123) vr=PN, vm=1, type=1C
+        DcmPersonName PersonName;
+        /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C
+        DcmUnsignedLong RationalDenominatorValue;
+        /// RationalNumeratorValue (0040,a162) vr=SL, vm=1-n, type=1C
+        DcmSignedLong RationalNumeratorValue;
+        /// ReferencedSOPSequence (0008,1199) vr=SQ, vm=1, type=1C
+        DRTReferencedSOPSequence ReferencedSOPSequence;
+        /// TextValue (0040,a160) vr=UT, vm=1, type=1C
+        DcmUnlimitedText TextValue;
+        /// Time (0040,a122) vr=TM, vm=1, type=1C
+        DcmTime Time;
+        /// UID (0040,a124) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier UID;
+        /// ValueType (0040,a040) vr=CS, vm=1, type=1
+        DcmCodeString ValueType;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTQuantityDefinitionSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTQuantityDefinitionSequence(const DRTQuantityDefinitionSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTQuantityDefinitionSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTQuantityDefinitionSequence &operator=(const DRTQuantityDefinitionSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 681d2624acde79ae3db68608de901a82ccf8e19b..93c3fb56d556061ee9e2d2b0400c5b7151fb2ab1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fadcc958de8342c4283f7d9152242bb0b90db2a7..cd7017b06a223232031d14d0a4a403a1b924cba2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 934aa5bde75474df9e5a70af1fa61acba9d4fe8a..9bd023c9e499f3e870de56aa3081f1d293295f82 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 69924ab8b641b34c2e2791b81854a12238a3f45c..2fe40143b9a1ebfc3147d976648f60225906fc6c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index be5681a86927e6c04046faf1b3327f5c212a8c9c..ddf9cd54a64e78234ab1c97a0bd9736276245f90 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index db2c780a2efe0c365c524935584761716081ba31..50524c87735aa32557a5726156165647c1b82c3f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3d91181eb34c668a31275e53e0e39b440611700b..2f63cf4f21f7d6e1fed8fd3853f5b64e23bbc497 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index cc048d5d5d6c0bd81aa0c3c0d968ad8d62e31c58..ff393304bb2518d9400c9d1e464ec574f7294611 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 215f5335b3db7fab7a1e13a408716c72405eda96..4eb30e686f62aa4214d9f67525b01539605df959 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 034c158f992a1ae9a205b1cb14844406e74ba3c9..335d75e867391a2d88442fc93b3d3807a7d351db 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ca185f024c812a897ccb42a5533afb06a85beccd..8928e896a45dacb8eacec5b50bb5c93bf7c08550 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7cbe4aced61c3cb5477d1be5022ebb547c8beb61..eba6728e1f055f0b619bbd5198a33bccd59cf1a7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2587dcc0e1c539dd1df659e47d0a6f3b48dc9b79..9f1e4961c908ea6b4b938b5e18636b146a5f3393 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b13309af304ae2e7eb91704d8af9fa50c8a07cd5..d24f3e92c05000b718e77dff1271956490a949bd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -105,6 +105,20 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
          */
         OFCondition getROIDisplayColor(Sint32 &value, const unsigned long pos = 0) const;
 
+        /** get RecommendedDisplayCIELabValue (0062,000d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRecommendedDisplayCIELabValue(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get RecommendedDisplayGrayscaleValue (0062,000c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRecommendedDisplayGrayscaleValue(Uint16 &value, const unsigned long pos = 0) const;
+
         /** get ReferencedROINumber (3006,0084)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -142,6 +156,20 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
          */
         OFCondition setROIDisplayColor(const OFString &value, const OFBool check = OFTrue);
 
+        /** set RecommendedDisplayCIELabValue (0062,000d)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=3
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRecommendedDisplayCIELabValue(const Uint16 value, const unsigned long pos = 0);
+
+        /** set RecommendedDisplayGrayscaleValue (0062,000c)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRecommendedDisplayGrayscaleValue(const Uint16 value, const unsigned long pos = 0);
+
         /** set ReferencedROINumber (3006,0084)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -158,6 +186,10 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
         DRTContourSequence ContourSequence;
         /// ROIDisplayColor (3006,002a) vr=IS, vm=3, type=3
         DcmIntegerString ROIDisplayColor;
+        /// RecommendedDisplayCIELabValue (0062,000d) vr=US, vm=3, type=3
+        DcmUnsignedShort RecommendedDisplayCIELabValue;
+        /// RecommendedDisplayGrayscaleValue (0062,000c) vr=US, vm=1, type=3
+        DcmUnsignedShort RecommendedDisplayGrayscaleValue;
         /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
         DcmIntegerString ReferencedROINumber;
 
index 0b07647ab2f88e190ee3f00d87661ad3f43fb861..80bfbe0b8733e271f3973634b792b0872ad1c421 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTDoseROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 987808a47564028ae168d589df818f3123a2bc48..31738280adb42e22fbf1c7c80a2415b6ec1ca0a1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 74e77799f61da326f2bf041b4d471dd8b158abb8..173208475054ec47685327176c1985b4545ba94e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8bbf638a4856e254655343e15173aa81582747b5..119e77f7c09e73e83a53141ed61bac174df2faac 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 149b0875f785a36017e6d7da1dd2fe5740fa0d1a..40e6bca8681817979208d6df217b43e21f59fb9c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 511d034c16c353aa4f4f41c59904fe7a691f4343..20b6b1ee41ac9a9744dd647a7915bf4bfc23e7d7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0c8ae115a8a1099158d1da8ea14d81708f48724c..79fad8666ac9c1d2853411eaeb9c32d9efa1a42c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c4b587f2314895284346b5553d7ecd8ebba12fbb..514fb87ca9bf946cde92b5e53c492408bd338dea 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5361e915dfdbafec44ea1e3aa9fe557456f0335a..2aee19aa5a53dd6e6cfa0a3f3883afd6cf666339 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for RTROIIdentificationCodeSequence (3006,0086)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 44ea3ee2bb1f318af338f58759654ed7122af182..c5cc089606cc0d4aa6fc2659f6f4954108dcf1fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 61406683e17f30e19ddbe9379243f3e52f1cf1fa..e02c599427208a543ed2d269521e7fc086f55277 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ee9c34f3a882f64f87a01f1df98ed7e04c800ddf..c802d6de691c7e04ae1ac10c980f3992cebdd5a8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c8bf12383032e130e08316810a92970829e4c74d..b8e7da6d930d549aaa5a7f04c209545eef71da01 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a28fae0bd73fac92a8af8d159ca5d5ffe1ed82ea..f45f87e1be8cae8965f982dc807010a89f81ae43 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 05e6170be7c115f8865d7fff9f12ce953a93926a..9cf6e015fe89acce8f1ede7e9f1812853213bd57 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6abee7138e8c26c01b41a25ef4f1c2d01c71ac16..f0356b7072fe4a9584fc7008b1c568a26ab650f0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7a07df01d3191a906995eb722ee0be6dfc18d436..75b8e93e99167d0a61b46a3d519842fdf9e65b0a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for RequestedProcedureCodeSequence (0032,1064)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index c87c406af3aa30fda1ee367f5010c9f951c3fe23..4f466b19f67660906388dcd6a9ec6a6b689af9ae 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -169,6 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @param  value  value to be set (possibly multi-valued) or "" for no value
          *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
index 8a598f4edfe537af78dd5122ed792fc2814ee7a9..165744dfe1810e5b48ff1d76d71f8602d82a08c1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ReasonForPerformedProcedureCodeSequence (0040,1012)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 5415659254a8f11ad41ffa6571b7252a10479a66..d726488587aa44d88539c5132374763d28529e99 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtdimrs.h"  // for DICOMMediaRetrievalSequence
 #include "dcmtk/dcmrt/seq/drtdirs.h"   // for DICOMRetrievalSequence
 #include "dcmtk/dcmrt/seq/drtrsos.h"   // for ReferencedSOPSequence
+#include "dcmtk/dcmrt/seq/drtwrsrs.h"  // for WADORSRetrievalSequence
 #include "dcmtk/dcmrt/seq/drtwrs.h"    // for WADORetrievalSequence
 #include "dcmtk/dcmrt/seq/drtxrs.h"    // for XDSRetrievalSequence
 
@@ -154,6 +155,18 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
         const DRTReferencedSOPSequence &getReferencedSOPSequence() const
             { return ReferencedSOPSequence; }
 
+        /** get WADORSRetrievalSequence (0040,e025)
+         *  @return reference to sequence element
+         */
+        DRTWADORSRetrievalSequence &getWADORSRetrievalSequence()
+            { return WADORSRetrievalSequence; }
+
+        /** get WADORSRetrievalSequence (0040,e025)
+         *  @return const reference to sequence element
+         */
+        const DRTWADORSRetrievalSequence &getWADORSRetrievalSequence() const
+            { return WADORSRetrievalSequence; }
+
         /** get WADORetrievalSequence (0040,e023)
          *  @return reference to sequence element
          */
@@ -218,6 +231,8 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
         DcmUniqueIdentifier StudyInstanceUID;
         /// TypeOfInstances (0040,e020) vr=CS, vm=1, type=1
         DcmCodeString TypeOfInstances;
+        /// WADORSRetrievalSequence (0040,e025) vr=SQ, vm=1, type=1C
+        DRTWADORSRetrievalSequence WADORSRetrievalSequence;
         /// WADORetrievalSequence (0040,e023) vr=SQ, vm=1, type=1C
         DRTWADORetrievalSequence WADORetrievalSequence;
         /// XDSRetrievalSequence (0040,e024) vr=SQ, vm=1, type=1C
index fd49083bfb90c0b95c9770e0b24c16d257a4592c..193865cdf21989e8f3c01d91c3677694f2db2d63 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7a2464d19ea7960473a4aa6bb10417ec05fb9b1e..7d241776adee83501a439e3711bd3ff84cf4659e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6b1d61bf17ca13e8e54c0b5da3bcaf0ede826d10..921b6149013722c4990e4dcb32f3954a2f39a2d4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8c0f2ce35645bf0f21dbf84dc4847d8884925e1f..ac4456badf302e7bf2ac96baafd37d72f408ef8a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 31842d60751bf724273662f3e05702a140b7be60..ffd2638e7c7fe2de5da938fdb102277a39dfc927 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f0f02e7686a45f6bd7ea11def409ec8874e01cdc..08e660af754fec928cac4362815cf19d72ea3877 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 51d9e4595d667e1f4d976e10209c6a489e90c6ee..d6bbcf570c7c20b82245104e53d88de3c721b5a4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6b2cd863c85d252dbba428945bc140451909a537..e2c9b7f54cb85b3ee52c6374e452d19991b10637 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ea42bbbd4acdc6d1315810273dd70f7c2f5ed9ae..2b34845354af2039a5d46e903b1281d3da69f3bc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ReasonForRequestedProcedureCodeSequence (0040,100a)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index ebb0abd079fda9c051c0ac7ec2e9148b1aa898bc..d37493c10610336a1af39a22aa94e7a569f0decb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 83bdecadc832d03805761d8e92e559df605d7b46..471d72fd05ddf9e397edc7ed5985cfda8dd2efe3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5f6a9e98516e68834618fa5ce3eadc6f6ac13e66..bb9f495fcad2504a6901e39b46625a6ea570c5e4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index cba2380c288a82707e18110ee574dccbcf2ee4e5..0b9a7ec7dc57ca2001cbd9f8b35d79005da1a0f2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index cc3549cd8eb7a72f6d2078be3f656591c47f5a99..73272e94ff7b4a9da942e6468c224e31e94a18a6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7617b1786b436bbd500a69d2a86346b9f13c835d..7e5706f0c0ee1c5432bb200203726ac164d49f31 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a212069b8bf0900eb18afb193e2446a13766b350..db4fe1fd34cf19d2fe89288407eaa24338b38446 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 19a9f9071bd761c44b93426a4d64bfc505a55e0f..4ee81149a249009bf28fc53c4a66228c1d951f8b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for RequestingServiceCodeSequence (0032,1034)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index cb28b07d5a68d41d86bc1d36d518c518beba6b28..a0e546ea59cdbb7c4d6a9c76e3d314df613c0ae8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 057206fec0f678302d0a128c2795ac0ba7eb227c..b6aabfd9693fe2f1d2f42038b1e4dc43d2c89049 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 86c552b3cca0a075f5bf68815aaa4d7fabff055b..e7f5d447aaa5cbed5f80db60be24ab531e20f510 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b445293e8733f336f11f6119d49920bbe6e354f1..7476aafed5c185a30aa7edba6a40387d472b933f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index e8a81f232f29df09b6cea32cfc781836b0adf505..51d0ec05e975d1da32f0583183e44af6e0a36263 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 60359ac68e6e40ccb7e8ef31c22a5e9a36b9dc86..cc41a4fd9386952b815f9bbc5c2dce32d1660212 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8a22dd7218435cbabb929b6f9f45abeab9d17a45..6339f1e351f4439e5947f0878487b677fc85c8c8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1c7d6b9c66fabc84b10111cf1dab84f52a0db240..31275ea42c32a6ed24a2ff3133dd31d5df3764b2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c35f0bff8edca930e8a58e9a256424abcf96d885..40fd3035dd12173e1be158111fa8a2558f8609f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 13f81aabea72a76abc194ffcd372a7002eeba4c2..c8bb63cb2aa885f7ef92c6d05d0938d8846f6017 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 948bc9eb4e2a38b711a43b9d8dd70cb681e0cb3c..4bff060fe005c03a85e2dcb8e55a2862f98f8976 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c5b149743067ee8119f69b835c99598f0683e489..524f0aad9c055c8ff4d3428aa84e459e2448fb03 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 274dc95be36aad940270dbcd67db75877571fef3..0697321b54113dc05097e2f71825b4eda9c5cc9a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dd6ad29bcbaeeea0a6d76a528d64a9635e1c3b63..2a18110d0581f674cb4fa48e1a3cff91639d6765 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 370cf5ff7fbec18aa74c525869cce582033aacd6..61a716fa893756f64ad209acb88ad783872b571f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a5bc8f2f1eedb68b507776aa8024fd2ea95b0082..1d1e6ff288023129efafd8afd436b86b170dcd4a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a773b0b3ff12bcbd403f00d071ec7f2fb1dcba86..b9f903712daf950848137946f78ea955d0746174 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtmucs.h"   // for MeasurementUnitsCodeSequence
+#include "dcmtk/dcmrt/seq/drtqds.h"    // for QuantityDefinitionSequence
 
 
 /** Interface class for RealWorldValueMappingSequence (0040,9096)
@@ -154,6 +155,18 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
         const DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence() const
             { return MeasurementUnitsCodeSequence; }
 
+        /** get QuantityDefinitionSequence (0040,9220)
+         *  @return reference to sequence element
+         */
+        DRTQuantityDefinitionSequence &getQuantityDefinitionSequence()
+            { return QuantityDefinitionSequence; }
+
+        /** get QuantityDefinitionSequence (0040,9220)
+         *  @return const reference to sequence element
+         */
+        const DRTQuantityDefinitionSequence &getQuantityDefinitionSequence() const
+            { return QuantityDefinitionSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set LUTExplanation (0028,3003)
@@ -216,6 +229,8 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
         DcmShortString LUTLabel;
         /// MeasurementUnitsCodeSequence (0040,08ea) vr=SQ, vm=1, type=1
         DRTMeasurementUnitsCodeSequence MeasurementUnitsCodeSequence;
+        /// QuantityDefinitionSequence (0040,9220) vr=SQ, vm=1, type=3
+        DRTQuantityDefinitionSequence QuantityDefinitionSequence;
         /// RealWorldValueFirstValueMapped (0040,9216) vr=US/SS, vm=1, type=1
         DcmUnsignedShort RealWorldValueFirstValueMapped;
         /// RealWorldValueIntercept (0040,9224) vr=FD, vm=1, type=1C
index a48d844bcde6368f587555d4f0db7be33b42a3cb..70c5a4cd8dcf983e1cc87e16993efc624ea5bb9d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 141f6ddd816e40d9305f15352a0ed92e4d1ab27f..52646b8ff1c4700ca2ed91b290aad8e1f6e47620 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for SeriesDescriptionCodeSequence (0008,103f)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 7c12dc61eaf94db66ca12980d3e4dcae134cbc18..06db62c6f31f744dfcc4e87ba0fc815315d91a35 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 55977152c34930efeab8b785a4a82ee8e6459a76..a66db0df18f53b902ea512ec1bbe69aa800c93c7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2057dfcd025f693604153db4bc0bf2b24d70305c..967bda6e6cd9ce9dd47f54a992791932c81510d2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0f7c06d80a7a1e9e5708ab9249db8c340a570746..db03a312caf905f112a9bc2d0930c5ab2396e1f5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1d70487108a03d3da31b2b8404d38cb583249470..6ec77c839749cc9992d562668286f47f096558a2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for SegmentedPropertyCategoryCodeSequence (0062,0003)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index 94774f855ede5dd0a5bc0abe5fcfa0dcde491c09..075109f714ffe3c80b1c281e34ed1963d5c6524a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 #include "dcmtk/dcmrt/seq/drtpcxs.h"   // for ProtocolContextSequence
 
 
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
 
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get MappingResource (0008,0105)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -168,8 +176,34 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
 
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
         /** get ProtocolContextSequence (0040,0440)
          *  @return reference to sequence element
          */
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set MappingResource (0008,0105)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
 
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -268,9 +323,9 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -286,10 +341,18 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
         /// ProtocolContextSequence (0040,0440) vr=SQ, vm=1, type=3
         DRTProtocolContextSequence ProtocolContextSequence;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
index af8d8242828f4c51d09e76c985526bbd49163c16..418ba831b279e293eaa534f85a2a5930843aed89 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3bfac5e9346dc3d29b9f9d307c51d998c949166c..5c8780238dd5300676ce0acda0b3ac1f404a91de 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 4fe21107deb651fe5eab593309bd720391111660..d226e577b5542d697fe6ed473b94f362f4388b4c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7e38c5607b10678f9d12cc9e1457f9668f29e689..f05b97a5af81155cfebf051ebf59229d950d1d63 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1d1e593042fde6320943288f5556f1bc7f8bb24d..e02148025fdca7ea8f7030d9f8cfa88fe393339e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b267b340796a7cbfb5eb45b19488e6b484c6c5c2..a76b0076f80f8b1ee986127034fdb732bb343a4f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 9f72066513fb0bd2d704168559bf58a237f3edad..6bab8b340fe6ed3db3038213e677d632d1c97055 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f707f6f02b13742afdc8809751be6c8f15cd6089..c3073b3f9bc8eb8c519f7367659a1c9cd03f0a3a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a13b76dfd5945fd89df5c27adaf7636c47f014b3..c2374d6bc3af9199bf1541833ff38293ad6f5027 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 18fbf0ae1b4587226f4de96f4bce3444a5564e92..62fcd5624065fa5800d57556c97baab40c5e6618 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dcd0cf519f4d9f89f152e23f174d0cd40f94b099..e1c2a36ecffb1b22d3a36c3ce865f3c4396de347 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
new file mode 100644 (file)
index 0000000..964ba62
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTWADORSRetrievalSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#ifndef DRTWRSRS_H
+#define DRTWRSRS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for WADORSRetrievalSequence (0040,e025)
+ */
+class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assigment operator
+         *  @param copy item object to be copied
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get RetrieveURL (0008,1190)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRetrieveURL(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set RetrieveURL (0008,1190)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRetrieveURL(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// RetrieveURL (0008,1190) vr=UR, vm=1, type=1
+        DcmUniversalResourceIdentifierOrLocator RetrieveURL;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTWADORSRetrievalSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTWADORSRetrievalSequence(const DRTWADORSRetrievalSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTWADORSRetrievalSequence();
+
+    /** assigment operator
+     *  @param copy sequence object to be copied
+     */
+    DRTWADORSRetrievalSequence &operator=(const DRTWADORSRetrievalSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    unsigned long getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const unsigned long num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const unsigned long num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const unsigned long num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const unsigned long num) const;
+
+    /** add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const unsigned long pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const unsigned long pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const unsigned long num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index b24815eccf87505b7f166123b4da0859552e8964..215e57c6fed7b947dff4a0b22e46dc8acac1c7b6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -97,6 +97,20 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
          */
         OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
 
+        /** get EffectiveWedgeAngle (300a,00de)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEffectiveWedgeAngle(OFString &value, const signed long pos = 0) const;
+
+        /** get EffectiveWedgeAngle (300a,00de)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEffectiveWedgeAngle(Float64 &value, const unsigned long pos = 0) const;
+
         /** get SourceToWedgeTrayDistance (300a,00da)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -190,6 +204,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
          */
         OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
 
+        /** set EffectiveWedgeAngle (300a,00de)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setEffectiveWedgeAngle(const OFString &value, const OFBool check = OFTrue);
+
         /** set SourceToWedgeTrayDistance (300a,00da)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -246,6 +267,8 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
 
         /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
         DcmLongString AccessoryCode;
+        /// EffectiveWedgeAngle (300a,00de) vr=DS, vm=1, type=3
+        DcmDecimalString EffectiveWedgeAngle;
         /// SourceToWedgeTrayDistance (300a,00da) vr=DS, vm=1, type=3
         DcmDecimalString SourceToWedgeTrayDistance;
         /// WedgeAngle (300a,00d5) vr=IS, vm=1, type=2
index 5d0a40c06f6e159650deef90b5c4f486e5da3822..162768db54d5ecd9bf9b8f421fbd8c655d2acd57 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 485be12bf2b2036448205aa3daa60ff8befdac57..c0447c3883337a0caff0d123be25c7e4c7921d30 100644 (file)
@@ -1,4 +1,4 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(dcmrt drtdose drtimage drtplan drtstrct drttreat drtionpl drtiontr drmdose drmimage drmplan drmstrct drttypes drtaadcs drtadcs drtads drtafs drtags drtajcs drtarics drtas1 drtas5 drtas6 drtas7 drtass drtbads drtbas drtbcps drtbl2 drtbl5 drtbldls drtbldps drtblds1 drtblds5 drtblds6 drtbldts drtbrcss drtbrdrs drtbrs drtbs drtbvcps drtcbars drtccs drtcctus drtcdrs drtces drtchs drtcims drtcis drtcncs drtcos drtcpas drtcps drtcsas drtcs drtcshs drtcsis drtcss drtdcs drtdimcs drtdimrs drtdirs drtdrs drtds drtdspcs drtdss drtdvhs drtdvrrs drteas drtes drtfds drtfes drtfgs drtfgss drtfms drtfsss drtgas drthsdrs drtiais drtians drtiblds drtibls drtibs drticpds drticps drtics drtiis drtipiqs drtircs drtiseis drtitts drtiwps drtiws drtlsds6 drtlsds7 drtlsds drtmacds drtmas drtmdrs drtmls drtmps drtmss drtmucs drtoas drtois drtopis drtos drtpbcs drtpcs drtpcxs drtpfms drtpics drtporcs drtporis drtppcs drtprsis drtpscs drtpsics drtpss drtpsss drtpvis drtras drtrbas2 drtrbas8 drtrbls drtrbos1 drtrbos6 drtrbos7 drtrbs2 drtrbs4 drtrbs8 drtrcdrs drtrcos drtrcps drtrcs drtrdros drtrdrs1 drtrdrs6 drtrdrs8 drtrds drtrecs drtrfgs drtrfors drtrics drtrims drtris drtrlsds drtrmdrs drtrms drtrmss6 drtrmss7 drtrpcs drtrpis drtrppcs drtrpphs drtrpps drtrppss drtrps drtrris1 drtrris6 drtrris9 drtrrms drtrros drtrrpcs drtrrros drtrrs drtrrshs drtrrtps3 drtrrtps4 drtrrtps5 drtrrtps drtrscs drtrsers drtrses drtrshs6 drtrshs7 drtrshs drtrsis drtrsns drtrsos drtrsrs drtrss drtrsss drtrsts drtrtrs2 drtrtrs4 drtrvis drtrws drtrwvms drtscris drtsdcs drtsds drtshds drtsis drtsns drtspccs drtspcs drtss drtssrs drttms0 drttms9 drttscds drttsibs drttsmds drttts drtvls drtwps drtwrs drtws drtxrs)
+DCMTK_ADD_LIBRARY(dcmrt drtdose drtimage drtplan drtstrct drttreat drtionpl drtiontr drmdose drmimage drmplan drmstrct drttypes drtaadcs drtadcs drtads drtafs drtags drtajcs drtarics drtas1 drtas5 drtas6 drtas7 drtass drtbads drtbas drtbcps drtbl2 drtbl5 drtbldls drtbldps drtblds1 drtblds5 drtblds6 drtbldts drtbrcss drtbrdrs drtbrs drtbs drtbss drtbvcps drtcbars drtccs drtcctus drtcdrs drtces drtchs drtcims drtcis drtcncs drtcos drtcpas drtcpis drtcps drtcsas drtcs drtcshs drtcsis drtcss drtdcs drtdias drtdimcs drtdimrs drtdirs drtdrs drtds drtdspcs drtdss drtdvhs drtdvrrs drteas drtecs drtes drtfds drtfes drtfgs drtfgss drtfms drtfsss drtgas drthsdrs drtiais drtians drtiblds drtibls drtibs drticpds drticps drtics drtiis drtipiqs drtircs drtiseis drtitts drtiwps drtiws drtlsds6 drtlsds7 drtlsds drtmacds drtmas drtmdrs drtmls drtmps drtmss drtmucs drtoas drtois drtopis drtos drtpbcs drtpcs drtpcxs drtpdecs drtpfms drtpics drtporcs drtporis drtppcs drtprsis drtpscs drtpsics drtpss drtpsss drtpvis drtqds drtras drtrbas2 drtrbas8 drtrbls drtrbos1 drtrbos6 drtrbos7 drtrbs2 drtrbs4 drtrbs8 drtrcdrs drtrcos drtrcps drtrcs drtrdros drtrdrs1 drtrdrs6 drtrdrs8 drtrds drtrecs drtrfgs drtrfors drtrics drtrims drtris drtrlsds drtrmdrs drtrms drtrmss6 drtrmss7 drtrpcs drtrpis drtrppcs drtrpphs drtrpps drtrppss drtrps drtrris1 drtrris6 drtrris9 drtrrms drtrros drtrrpcs drtrrros drtrrs drtrrshs drtrrtps3 drtrrtps4 drtrrtps5 drtrrtps drtrscs drtrsers drtrses drtrshs6 drtrshs7 drtrshs drtrsis drtrsns drtrsos drtrsrs drtrss drtrsss drtrsts drtrtrs2 drtrtrs4 drtrvis drtwrsrs drtrws drtrwvms drtscris drtsdcs drtsds drtshds drtsis drtsns drtspccs drtspcs drtss drtssrs drttms0 drttms9 drttscds drttsibs drttsmds drttts drtvls drtwps drtwrs drtws drtxrs)
 
 DCMTK_TARGET_LINK_MODULES(dcmrt ofstd oflog dcmdata dcmimgle)
index ff002a867835112fb5f8bc24f2cb4ad6d98f2f03..e85cb72121c01d7d8e3239fa9d999e6c1c07e6c0 100644 (file)
@@ -39,6 +39,8 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -109,13 +111,16 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
@@ -145,11 +150,14 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
@@ -157,8 +165,10 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
@@ -219,6 +229,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -289,15 +301,18 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -332,14 +347,18 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
@@ -410,6 +429,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -480,10 +501,11 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtass.h \
- ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
  ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
@@ -502,8 +524,9 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -537,12 +560,15 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
@@ -599,6 +625,8 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -669,13 +697,16 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -702,7 +733,9 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../include/dcmtk/dcmrt/seq/drtcis.h ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../include/dcmtk/dcmrt/seq/drtarics.h \
@@ -717,8 +750,10 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
@@ -771,6 +806,8 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -841,7 +878,9 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -883,6 +922,8 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -953,7 +994,9 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtads.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -995,6 +1038,8 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1065,7 +1110,9 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -1107,6 +1154,8 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1177,6 +1226,7 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtags.h \
@@ -1219,6 +1269,8 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1289,6 +1341,7 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtajcs.h \
@@ -1331,6 +1384,8 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1401,7 +1456,9 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtarics.o: drtarics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtarics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -1443,6 +1500,8 @@ drtarics.o: drtarics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1513,7 +1572,9 @@ drtarics.o: drtarics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h
 drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h \
@@ -1556,6 +1617,8 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1626,6 +1689,7 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtags.h
 drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1669,6 +1733,8 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1739,6 +1805,7 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtags.h
 drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1782,6 +1849,8 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1852,6 +1921,7 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtas7.h \
@@ -1894,6 +1964,8 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1964,6 +2036,7 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtass.h \
@@ -2006,6 +2079,8 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2076,6 +2151,7 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
  ../include/dcmtk/dcmrt/seq/drtbcps.h \
@@ -2123,6 +2199,8 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2193,6 +2271,7 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbas.h \
@@ -2235,6 +2314,8 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2305,7 +2386,9 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -2347,6 +2430,8 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2417,6 +2502,7 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h
 drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2460,6 +2546,8 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2530,6 +2618,7 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbl5.h \
@@ -2572,6 +2661,8 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2642,6 +2733,7 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
@@ -2684,6 +2776,8 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2754,6 +2848,7 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
@@ -2796,6 +2891,8 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2866,6 +2963,7 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
@@ -2908,6 +3006,8 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2978,6 +3078,7 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds5.h \
@@ -3020,6 +3121,8 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3090,6 +3193,7 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds6.h \
@@ -3132,6 +3236,8 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3202,6 +3308,7 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
@@ -3244,6 +3351,8 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3314,6 +3423,7 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
@@ -3356,6 +3466,8 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3426,7 +3538,9 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -3468,6 +3582,8 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3538,6 +3654,7 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
@@ -3580,6 +3697,8 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3650,8 +3769,10 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -3693,6 +3814,8 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3763,6 +3886,7 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
@@ -3775,8 +3899,8 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h
-drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3816,6 +3940,8 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3886,9 +4012,10 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcbars.h \
+drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3928,6 +4055,8 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -3998,10 +4127,10 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtads.h
-drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4041,6 +4170,8 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4111,9 +4242,11 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4153,6 +4286,8 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4223,9 +4358,11 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4265,6 +4402,8 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4335,9 +4474,10 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtces.h \
+drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4377,6 +4517,8 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4447,12 +4589,10 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
-drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtchs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtces.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4492,6 +4632,8 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4562,12 +4704,13 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h
-drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h
+drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4607,6 +4750,8 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4677,12 +4822,13 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h
+drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4722,6 +4868,8 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4792,9 +4940,14 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4834,6 +4987,8 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -4904,9 +5059,10 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcos.h \
+drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4946,6 +5102,8 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5016,9 +5174,11 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5058,6 +5218,8 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5128,9 +5290,10 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcps.h \
+drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5170,6 +5333,8 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5240,12 +5405,10 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h
-drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5285,6 +5448,8 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5355,10 +5520,12 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h
-drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5398,6 +5565,8 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5468,9 +5637,13 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h
+drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5510,6 +5683,8 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5580,9 +5755,11 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h
+drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5622,6 +5799,8 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5692,9 +5871,10 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h \
+drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5734,6 +5914,8 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5804,9 +5986,10 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h \
+drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5846,6 +6029,8 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -5916,9 +6101,10 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5958,6 +6144,8 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6028,9 +6216,11 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6070,6 +6260,8 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6140,9 +6332,11 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6182,6 +6376,8 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6252,15 +6448,18 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
+drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -6287,12 +6486,13 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6363,76 +6563,11 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdvhs.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h
-drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6472,6 +6607,8 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6542,9 +6679,10 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtds.h \
+drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6584,6 +6722,8 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6654,17 +6794,16 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -6691,11 +6830,14 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6766,16 +6908,438 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofcast.h \
- ../../ofstd/include/dcmtk/ofstd/ofexport.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdvhs.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmls.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h
+drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -6808,6 +7372,8 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6878,8 +7444,10 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -6921,6 +7489,8 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -6991,6 +7561,7 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtdvrrs.h
 drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -7034,6 +7605,8 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7104,6 +7677,7 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drteas.h \
@@ -7146,6 +7720,123 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7216,6 +7907,7 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtes.h \
@@ -7258,6 +7950,8 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7328,6 +8022,7 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
  ../include/dcmtk/dcmrt/seq/drtblds5.h \
@@ -7374,6 +8069,8 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7444,6 +8141,7 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtfes.h \
@@ -7486,6 +8184,8 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7556,6 +8256,7 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtfgs.h \
@@ -7598,6 +8299,8 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7668,6 +8371,7 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrbs8.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
@@ -7715,6 +8419,8 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7785,6 +8491,7 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtfsss.h
 drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -7828,6 +8535,8 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -7898,6 +8607,7 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtfsss.h \
@@ -7940,6 +8650,8 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8010,6 +8722,7 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtgas.h \
@@ -8052,6 +8765,8 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8122,6 +8837,7 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drthsdrs.h \
@@ -8164,6 +8880,8 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8234,6 +8952,7 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiais.h \
@@ -8276,6 +8995,8 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8346,6 +9067,7 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtians.h \
@@ -8388,6 +9110,8 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8458,6 +9182,7 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
@@ -8500,6 +9225,8 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8570,6 +9297,7 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtibls.h \
@@ -8612,6 +9340,8 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8682,7 +9412,9 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbss.h
 drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtibs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -8724,6 +9456,8 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8794,10 +9528,11 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtas6.h ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../include/dcmtk/dcmrt/seq/drticps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
@@ -8853,6 +9588,8 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -8923,6 +9660,7 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtcpas.h \
@@ -8971,6 +9709,8 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9041,6 +9781,7 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
@@ -9089,6 +9830,8 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9159,7 +9902,9 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -9201,6 +9946,8 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9271,6 +10018,7 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \
@@ -9312,6 +10060,8 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9382,15 +10132,18 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -9425,14 +10178,18 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
@@ -9485,6 +10242,8 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9555,13 +10314,16 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -9577,7 +10339,7 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
  ../include/dcmtk/dcmrt/seq/drtgas.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../include/dcmtk/dcmrt/seq/drticps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
@@ -9614,12 +10376,15 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
@@ -9672,6 +10437,8 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9742,14 +10509,17 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -9781,12 +10551,15 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
@@ -9864,6 +10637,8 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -9934,9 +10709,11 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
 drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtircs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -9978,6 +10755,8 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10048,6 +10827,7 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
@@ -10090,6 +10870,8 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10160,6 +10942,7 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtitts.h \
@@ -10202,6 +10985,8 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10272,6 +11057,7 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h
 drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -10315,6 +11101,8 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10385,6 +11173,7 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiws.h \
@@ -10427,6 +11216,8 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10497,6 +11288,7 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtlsds.h \
@@ -10539,6 +11331,8 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10609,6 +11403,7 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtlsds6.h \
@@ -10651,6 +11446,8 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10721,6 +11518,7 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtlsds7.h \
@@ -10763,6 +11561,8 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10833,6 +11633,7 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
@@ -10875,6 +11676,8 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -10945,8 +11748,9 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h
 drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -10988,6 +11792,8 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11058,6 +11864,7 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmdrs.h \
@@ -11100,6 +11907,8 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11170,6 +11979,7 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmls.h \
@@ -11212,6 +12022,8 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11282,6 +12094,7 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h \
@@ -11324,6 +12137,8 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11394,6 +12209,7 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmss.h \
@@ -11436,6 +12252,8 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11506,6 +12324,7 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmucs.h \
@@ -11548,6 +12367,8 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11618,7 +12439,9 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtoas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -11660,6 +12483,8 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11730,6 +12555,7 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtmas.h
 drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -11773,6 +12599,8 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11843,8 +12671,10 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
 drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -11886,6 +12716,8 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -11956,10 +12788,12 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
 drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -12001,6 +12835,8 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12071,6 +12907,7 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
@@ -12113,6 +12950,8 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12183,7 +13022,9 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -12225,6 +13066,8 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12295,7 +13138,9 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpcxs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -12337,6 +13182,8 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12407,11 +13254,129 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
  ../include/dcmtk/dcmrt/seq/drtcims.h \
  ../include/dcmtk/dcmrt/seq/drtmucs.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h
 drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -12453,6 +13418,8 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12523,6 +13490,7 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
@@ -12565,6 +13533,8 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12635,7 +13605,9 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -12676,6 +13648,8 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12746,10 +13720,11 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtass.h \
- ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
  ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
@@ -12768,8 +13743,9 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -12802,30 +13778,149 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmucs.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtss.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drttts.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h
-drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drttts.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h \
+ ../include/dcmtk/dcmrt/seq/drttms9.h
+drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12865,6 +13960,8 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -12935,9 +14032,12 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12977,6 +14077,8 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13047,10 +14149,15 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h
-drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13090,6 +14197,8 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13160,14 +14269,12 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13207,6 +14314,8 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13277,10 +14386,11 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h
-drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13320,6 +14430,8 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13390,9 +14502,11 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13432,6 +14546,8 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13502,9 +14618,13 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h
+drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13544,6 +14664,8 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13614,12 +14736,10 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h
-drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13659,6 +14779,8 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13729,9 +14851,10 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpvis.h \
+drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13771,6 +14894,8 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13841,7 +14966,12 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
 drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtras.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -13883,6 +15013,8 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -13953,10 +15085,12 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtians.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
  ../include/dcmtk/dcmrt/seq/drtcncs.h \
@@ -14004,6 +15138,8 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14074,6 +15210,7 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbas8.h \
@@ -14116,6 +15253,8 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14186,6 +15325,7 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbls.h \
@@ -14228,6 +15368,8 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14298,6 +15440,7 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
@@ -14340,6 +15483,8 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14410,6 +15555,7 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbos6.h \
@@ -14452,6 +15598,8 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14522,6 +15670,7 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbos7.h \
@@ -14564,6 +15713,8 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14634,6 +15785,7 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
@@ -14676,6 +15828,8 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14746,6 +15900,7 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h
 drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -14789,6 +15944,8 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14859,6 +16016,7 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h
 drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -14902,6 +16060,8 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -14972,6 +16132,7 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h
 drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -15015,6 +16176,8 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15085,6 +16248,7 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrcos.h \
@@ -15127,6 +16291,8 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15197,6 +16363,7 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
@@ -15239,6 +16406,8 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15309,6 +16478,7 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h \
@@ -15351,6 +16521,8 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15421,6 +16593,7 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h
 drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -15464,6 +16637,8 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15534,6 +16709,7 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
@@ -15576,6 +16752,8 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15646,6 +16824,7 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
@@ -15688,6 +16867,8 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15758,6 +16939,7 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
@@ -15800,6 +16982,8 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15870,6 +17054,7 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrds.h \
@@ -15912,6 +17097,8 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -15982,6 +17169,7 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
@@ -16024,6 +17212,8 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16094,6 +17284,7 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
@@ -16136,6 +17327,8 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16206,6 +17399,7 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
@@ -16251,6 +17445,8 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16321,6 +17517,7 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
@@ -16365,6 +17562,8 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16435,7 +17634,9 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -16477,6 +17678,8 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16547,8 +17750,10 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -16590,6 +17795,8 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16660,8 +17867,10 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrlsds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -16703,6 +17912,8 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16773,6 +17984,7 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
@@ -16815,6 +18027,8 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16885,6 +18099,7 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrms.h \
@@ -16927,6 +18142,8 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -16997,6 +18214,7 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrmss6.h \
@@ -17039,6 +18257,8 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17109,6 +18329,7 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrmss7.h \
@@ -17151,6 +18372,8 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17221,6 +18444,7 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
@@ -17263,6 +18487,8 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17333,7 +18559,9 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -17375,6 +18603,8 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17445,8 +18675,10 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
 drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -17488,6 +18720,8 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17558,7 +18792,9 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -17600,6 +18836,8 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17670,11 +18908,13 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h
 drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -17716,6 +18956,8 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17786,6 +19028,7 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h
 drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -17829,6 +19072,8 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -17899,6 +19144,7 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
@@ -17941,6 +19187,8 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18011,6 +19259,7 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h \
@@ -18053,6 +19302,8 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18123,6 +19374,7 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrris6.h \
@@ -18165,6 +19417,8 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18235,6 +19489,7 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrris9.h \
@@ -18277,6 +19532,8 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18347,6 +19604,7 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrms.h \
@@ -18389,6 +19647,8 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18459,6 +19719,7 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrros.h \
@@ -18501,6 +19762,8 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18571,8 +19834,10 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtarics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
@@ -18620,6 +19885,8 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18690,7 +19957,9 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -18732,6 +20001,8 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18802,6 +20073,7 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrs.h \
@@ -18844,6 +20116,8 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -18914,6 +20188,7 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrshs.h \
@@ -18956,6 +20231,8 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19026,6 +20303,7 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps.h \
@@ -19068,6 +20346,8 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19138,6 +20418,7 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
@@ -19184,6 +20465,8 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19254,6 +20537,7 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
@@ -19296,6 +20580,8 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19366,6 +20652,7 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
@@ -19408,6 +20695,8 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19478,6 +20767,7 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
@@ -19520,6 +20810,8 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19590,7 +20882,9 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -19632,6 +20926,8 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19702,9 +20998,11 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -19746,6 +21044,8 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19816,6 +21116,7 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtcis.h
 drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -19859,6 +21160,8 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -19929,6 +21232,7 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrshs6.h \
@@ -19971,6 +21275,8 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20041,6 +21347,7 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrshs7.h \
@@ -20083,6 +21390,8 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20153,6 +21462,7 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsis.h \
@@ -20195,6 +21505,8 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20265,6 +21577,7 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsns.h \
@@ -20307,6 +21620,8 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20377,6 +21692,7 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
@@ -20419,6 +21735,8 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20489,6 +21807,7 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsrs.h \
@@ -20531,6 +21850,8 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20601,6 +21922,7 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrss.h \
@@ -20643,6 +21965,8 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20713,6 +22037,7 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsss.h \
@@ -20755,6 +22080,8 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20825,6 +22152,7 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
@@ -20867,6 +22195,8 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -20937,6 +22267,7 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
 drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -20980,6 +22311,8 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21050,6 +22383,7 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h
@@ -21094,6 +22428,8 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21164,6 +22500,7 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrvis.h \
@@ -21206,6 +22543,8 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21276,6 +22615,7 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrws.h \
@@ -21318,6 +22658,8 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21388,6 +22730,7 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
@@ -21430,6 +22773,8 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21500,8 +22845,12 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h
+ ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
 drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -21543,6 +22892,8 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21613,10 +22964,12 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsdcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -21658,6 +23011,8 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21728,7 +23083,9 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -21770,6 +23127,8 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21840,6 +23199,7 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtshds.h \
@@ -21882,6 +23242,8 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -21952,6 +23314,7 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsis.h \
@@ -21994,6 +23357,8 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22064,8 +23429,10 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsns.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -22107,6 +23474,8 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22177,6 +23546,7 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h \
@@ -22219,6 +23589,8 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22289,7 +23661,9 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -22331,6 +23705,8 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22401,9 +23777,10 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
  ../include/dcmtk/dcmrt/seq/drtcims.h \
  ../include/dcmtk/dcmrt/seq/drtmucs.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h
@@ -22448,6 +23825,8 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22518,6 +23897,7 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
@@ -22560,6 +23940,8 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22630,8 +24012,9 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
 drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drtstrct.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -22672,6 +24055,8 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22742,13 +24127,16 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -22775,7 +24163,9 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../include/dcmtk/dcmrt/seq/drtcis.h ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../include/dcmtk/dcmrt/seq/drtarics.h \
@@ -22790,8 +24180,10 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
@@ -22844,6 +24236,8 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -22914,6 +24308,7 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttms9.h \
@@ -22956,6 +24351,8 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23026,6 +24423,7 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttreat.h ../include/dcmtk/dcmrt/drttypes.h \
@@ -23067,6 +24465,8 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23137,13 +24537,16 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -23171,12 +24574,15 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
@@ -23232,6 +24638,8 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23302,6 +24710,7 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttsibs.h \
@@ -23344,6 +24753,8 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23414,6 +24825,7 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtas7.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
@@ -23476,6 +24888,8 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23546,6 +24960,7 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
@@ -23588,6 +25003,8 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23658,6 +25075,7 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h
 drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -23700,6 +25118,8 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23770,6 +25190,7 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h \
@@ -23812,6 +25233,8 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23882,6 +25305,7 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwps.h \
@@ -23924,6 +25348,8 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -23994,6 +25420,7 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h \
@@ -24036,6 +25463,123 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -24106,6 +25650,7 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtws.h \
@@ -24148,6 +25693,8 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -24218,6 +25765,7 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtxrs.h \
@@ -24260,6 +25808,8 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -24330,4 +25880,5 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
index 86eee98553a95a9a17558a5b8bcb29978d812918..30c5409a2b1d6f4bab28a93e69b0eaea81d9e7ef 100644 (file)
@@ -26,32 +26,32 @@ objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o drtiontr.
        drtaadcs.o drtadcs.o drtads.o drtafs.o drtags.o drtajcs.o drtarics.o \
        drtas1.o drtas5.o drtas6.o drtas7.o drtass.o drtbads.o drtbas.o \
        drtbcps.o drtbl2.o drtbl5.o drtbldls.o drtbldps.o drtblds1.o drtblds5.o \
-       drtblds6.o drtbldts.o drtbrcss.o drtbrdrs.o drtbrs.o drtbs.o drtbvcps.o \
-       drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtchs.o drtcims.o \
-       drtcis.o drtcncs.o drtcos.o drtcpas.o drtcps.o drtcsas.o drtcs.o \
-       drtcshs.o drtcsis.o drtcss.o drtdcs.o drtdimcs.o drtdimrs.o drtdirs.o \
-       drtdrs.o drtds.o drtdspcs.o drtdss.o drtdvhs.o drtdvrrs.o drteas.o \
-       drtes.o drtfds.o drtfes.o drtfgs.o drtfgss.o drtfms.o drtfsss.o \
-       drtgas.o drthsdrs.o drtiais.o drtians.o drtiblds.o drtibls.o drtibs.o \
-       drticpds.o drticps.o drtics.o drtiis.o drtipiqs.o drtircs.o drtiseis.o \
-       drtitts.o drtiwps.o drtiws.o drtlsds6.o drtlsds7.o drtlsds.o drtmacds.o \
-       drtmas.o drtmdrs.o drtmls.o drtmps.o drtmss.o drtmucs.o drtoas.o \
-       drtois.o drtopis.o drtos.o drtpbcs.o drtpcs.o drtpcxs.o drtpfms.o \
-       drtpics.o drtporcs.o drtporis.o drtppcs.o drtprsis.o drtpscs.o \
-       drtpsics.o drtpss.o drtpsss.o drtpvis.o drtras.o drtrbas2.o drtrbas8.o \
-       drtrbls.o drtrbos1.o drtrbos6.o drtrbos7.o drtrbs2.o drtrbs4.o drtrbs8.o \
-       drtrcdrs.o drtrcos.o drtrcps.o drtrcs.o drtrdros.o drtrdrs1.o drtrdrs6.o \
-       drtrdrs8.o drtrds.o drtrecs.o drtrfgs.o drtrfors.o drtrics.o drtrims.o \
-       drtris.o drtrlsds.o drtrmdrs.o drtrms.o drtrmss6.o drtrmss7.o drtrpcs.o \
-       drtrpis.o drtrppcs.o drtrpphs.o drtrpps.o drtrppss.o drtrps.o drtrris1.o \
-       drtrris6.o drtrris9.o drtrrms.o drtrros.o drtrrpcs.o drtrrros.o drtrrs.o \
-       drtrrshs.o drtrrtps3.o drtrrtps4.o drtrrtps5.o drtrrtps.o drtrscs.o \
-       drtrsers.o drtrses.o drtrshs6.o drtrshs7.o drtrshs.o drtrsis.o drtrsns.o \
-       drtrsos.o drtrsrs.o drtrss.o drtrsss.o drtrsts.o drtrtrs2.o drtrtrs4.o \
-       drtrvis.o drtrws.o drtrwvms.o drtscris.o drtsdcs.o drtsds.o drtshds.o \
-       drtsis.o drtsns.o drtspccs.o drtspcs.o drtss.o drtssrs.o drttms0.o \
-       drttms9.o drttscds.o drttsibs.o drttsmds.o drttts.o drtvls.o drtwps.o \
-       drtwrs.o drtws.o drtxrs.o
+       drtblds6.o drtbldts.o drtbrcss.o drtbrdrs.o drtbrs.o drtbs.o drtbss.o \
+       drtbvcps.o drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtchs.o \
+       drtcims.o drtcis.o drtcncs.o drtcos.o drtcpas.o drtcpis.o drtcps.o \
+       drtcsas.o drtcs.o drtcshs.o drtcsis.o drtcss.o drtdcs.o drtdias.o \
+       drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o drtds.o drtdspcs.o drtdss.o \
+       drtdvhs.o drtdvrrs.o drteas.o drtecs.o drtes.o drtfds.o drtfes.o drtfgs.o \
+       drtfgss.o drtfms.o drtfsss.o drtgas.o drthsdrs.o drtiais.o drtians.o \
+       drtiblds.o drtibls.o drtibs.o drticpds.o drticps.o drtics.o drtiis.o \
+       drtipiqs.o drtircs.o drtiseis.o drtitts.o drtiwps.o drtiws.o drtlsds6.o \
+       drtlsds7.o drtlsds.o drtmacds.o drtmas.o drtmdrs.o drtmls.o drtmps.o \
+       drtmss.o drtmucs.o drtoas.o drtois.o drtopis.o drtos.o drtpbcs.o drtpcs.o \
+       drtpcxs.o drtpdecs.o drtpfms.o drtpics.o drtporcs.o drtporis.o drtppcs.o \
+       drtprsis.o drtpscs.o drtpsics.o drtpss.o drtpsss.o drtpvis.o drtqds.o \
+       drtras.o drtrbas2.o drtrbas8.o drtrbls.o drtrbos1.o drtrbos6.o drtrbos7.o \
+       drtrbs2.o drtrbs4.o drtrbs8.o drtrcdrs.o drtrcos.o drtrcps.o drtrcs.o \
+       drtrdros.o drtrdrs1.o drtrdrs6.o drtrdrs8.o drtrds.o drtrecs.o drtrfgs.o \
+       drtrfors.o drtrics.o drtrims.o drtris.o drtrlsds.o drtrmdrs.o drtrms.o \
+       drtrmss6.o drtrmss7.o drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o drtrpps.o \
+       drtrppss.o drtrps.o drtrris1.o drtrris6.o drtrris9.o drtrrms.o drtrros.o \
+       drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrrtps3.o drtrrtps4.o \
+       drtrrtps5.o drtrrtps.o drtrscs.o drtrsers.o drtrses.o drtrshs6.o \
+       drtrshs7.o drtrshs.o drtrsis.o drtrsns.o drtrsos.o drtrsrs.o drtrss.o \
+       drtrsss.o drtrsts.o drtrtrs2.o drtrtrs4.o drtrvis.o drtrws.o drtrwvms.o \
+       drtscris.o drtsdcs.o drtsds.o drtshds.o drtsis.o drtsns.o drtspccs.o \
+       drtspcs.o drtss.o drtssrs.o drttms0.o drttms9.o drttscds.o drttsibs.o \
+       drttsmds.o drttts.o drtvls.o drtwps.o drtwrs.o drtwrsrs.o drtws.o drtxrs.o
 
 library = libdcmrt.$(LIBEXT)
 
index 085a7200c1d9e0a654944b787fc5c43f7d98f0c9..b92237423d1842a094352f671ef9894d0ce6d3ae 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012, OFFIS e.V.
+ *  Copyright (C) 2012-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,7 +59,7 @@ protected:
     signedT getPixelSigned(Uint32 pixelNumber)
     {
         signedT result;
-        if (pixelData_.getPartialValue(&result, pixelNumber * sizeof(signedT), sizeof(signedT)).bad())
+        if (pixelData_.getPartialValue(&result, OFstatic_cast(Uint32, pixelNumber * sizeof(signedT)), OFstatic_cast(Uint32, sizeof(signedT))).bad())
             return -1;
         return result;
     }
@@ -67,7 +67,7 @@ protected:
     unsignedT getPixelUnsigned(Uint32 pixelNumber)
     {
         unsignedT result;
-        if (pixelData_.getPartialValue(&result, pixelNumber * sizeof(unsignedT), sizeof(unsignedT)).bad())
+        if (pixelData_.getPartialValue(&result, OFstatic_cast(Uint32, pixelNumber * sizeof(unsignedT)), OFstatic_cast(Uint32, sizeof(unsignedT))).bad())
             return -1;
         return result;
     }
@@ -82,7 +82,7 @@ protected:
             cond = EC_MemoryExhausted;
         } else {
             // First, get the "raw" pixel data
-            cond = pixelData_.getPartialValue(tmp, offset * sizeof(signedT), length * sizeof(signedT));
+            cond = pixelData_.getPartialValue(tmp, OFstatic_cast(Uint32, offset * sizeof(signedT)), OFstatic_cast(Uint32, length * sizeof(signedT)));
             if (cond.good()) {
                 result.clear();
                 result.reserve(length);
@@ -105,7 +105,7 @@ protected:
             cond = EC_MemoryExhausted;
         } else {
             // First, get the "raw" pixel data
-            cond = pixelData_.getPartialValue(tmp, offset * sizeof(unsignedT), length * sizeof(unsignedT));
+            cond = pixelData_.getPartialValue(tmp, OFstatic_cast(Uint32, offset * sizeof(unsignedT)), OFstatic_cast(Uint32, length * sizeof(unsignedT)));
             if (cond.good()) {
                 result.clear();
                 result.reserve(length);
index e223f2f5ce6c34ab5b2f86fee0dc817e5319cb9f..c25a13a2744748cc9db4f3d7af8771ca8aa04b00 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item::Item(const OFBool emptyDefault
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartment
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAssigningAgencyOrDepartmentCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAssigningAgencyOrDepartmentCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::read(DcmItem &item
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::write(DcmItem &ite
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getContextUID(OFSt
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setContextUID(cons
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAssigningAgencyOrDepartmentCodeSequence::DRTAssigningAgencyOrDepartmentCodeSequence(const OFBool emptyDefaultSequence)
index 9b28cf1491fb7da814e49bd85bf5b1f592e6ae78..a350a8e82818aac967e3641d8d701ba343fa962a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAdmittingDiagnosesCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAdmittingDiagnosesCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAdmittingDiagnosesCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAdmittingDiagnosesCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AdmittingDiagnosesCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AdmittingDiagnosesCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getContextUID(OFString &val
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setContextUID(const OFStrin
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAdmittingDiagnosesCodeSequence::DRTAdmittingDiagnosesCodeSequence(const OFBool emptyDefaultSequence)
index 81f33cd761db75a4f804c52e8c594dabc0f7bd5f..b5f23b841e13e969f6310b0ed53d535a0d30ace1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAdditionalDrugSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAdditionalDrugSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::Item::operator=(cons
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAdditionalDrugSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAdditionalDrugSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAdditionalDrugSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AdditionalDrugSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AdditionalDrugSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdditionalDrugSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAdditionalDrugSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AdditionalDrugSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AdditionalDrugSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdditionalDrugSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAdditionalDrugSequence::Item::getContextUID(OFString &value, cons
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAdditionalDrugSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAdditionalDrugSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAdditionalDrugSequence::Item::setContextUID(const OFString &value
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAdditionalDrugSequence::Item::setMappingResource(const OFString &
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAdditionalDrugSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAdditionalDrugSequence::DRTAdditionalDrugSequence(const OFBool emptyDefaultSequence)
index ca1be4a4cb2be2ef0e633752d99d22ec85a0fef1..86fa43f9c6def71d6ddafaa410b81d47817b6172 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0c7da5e92e9edf867452c111f31e3f6a6b47a466..d84ca1518f36c821f6814d5660f74040bc7c8928 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3ed0ce552c7b3527527e5012b454cd850fd97c0d..17a0ff607d81a464a9e4e8e9296addece72c0077 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAssigningJurisdictionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAssigningJurisdictionCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAssigningJurisdictionCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAssigningJurisdictionCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AssigningJurisdictionCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AssigningJurisdictionCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AssigningJurisdictionCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AssigningJurisdictionCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::getContextUID(OFString &
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResource(OFStr
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::setContextUID(const OFSt
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResource(const
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAssigningJurisdictionCodeSequence::DRTAssigningJurisdictionCodeSequence(const OFBool emptyDefaultSequence)
index 6145361607c6b8f31da9176eb0ea89f4e0d4f57a..7e6d530b189892c606f076d8d4d45e571ccdac9d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdditionalRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,8 +31,12 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefau
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
-    PurposeOfReferenceCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    MappingResourceUID(DCM_MappingResourceUID),
+    PurposeOfReferenceCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -49,8 +53,12 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
-    PurposeOfReferenceCodeSequence(copy.PurposeOfReferenceCodeSequence)
+    MappingResourceUID(copy.MappingResourceUID),
+    PurposeOfReferenceCodeSequence(copy.PurposeOfReferenceCodeSequence),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -75,8 +83,12 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentifica
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
         PurposeOfReferenceCodeSequence = copy.PurposeOfReferenceCodeSequence;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTAdditionalRTROIIdentificationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTAdditionalRTROIIdentificationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::read(DcmItem &it
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AdditionalRTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AdditionalRTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
@@ -157,13 +181,17 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::write(DcmItem &i
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AdditionalRTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AdditionalRTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdditionalRTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdditionalRTROIIdentificationCodeSequence");
@@ -264,6 +292,15 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextUID(OF
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResour
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextUID(co
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResour
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAdditionalRTROIIdentificationCodeSequence::DRTAdditionalRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence)
index fee1843297775c9811dfcf6e7f191e1ff51019b7..4c06a7386ed02ed6f0bfacd70069a3ef38890733 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 16ee6da41bc13d04c5687ef68b60386e95804045..9f4901af0d2ed76731b89c8a3798392d163f0328 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fa1499d2465bd9589bdd7578eddcdd2b7f9e49c2..304bd0a262a297339c52b0662f87aa88b5033ebd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0894f0bff5b2f0bb2051e9fd0f4ce178f7284a8d..1abdea156c9488836fd3a2407ed8b458f40bb4ea 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ac8d89e9e4b9dabf854709ac03d5ce02fa2cc556..5578b5778dcd72758babefa18bd2636185fe7d4c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 33a33b22b26dc956a6831c8d5a39bdf4bfeeeb41..55e4dee668fa9f87f5c595f541fe6d801af6addc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 749fd65f82ebf862202779df95653e97dfe687c4..55a7497217a95dc3a8fddee387be9ddcba26ce9d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTContrastBolusAgentSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTContrastBolusAgentSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::Item::operat
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTContrastBolusAgentSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTContrastBolusAgentSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTContrastBolusAgentSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ContrastBolusAgentSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ContrastBolusAgentSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ContrastBolusAgentSequence");
@@ -151,13 +175,17 @@ OFCondition DRTContrastBolusAgentSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ContrastBolusAgentSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ContrastBolusAgentSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ContrastBolusAgentSequence");
@@ -257,6 +285,15 @@ OFCondition DRTContrastBolusAgentSequence::Item::getContextUID(OFString &value,
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTContrastBolusAgentSequence::Item::getMappingResource(OFString &va
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTContrastBolusAgentSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTContrastBolusAgentSequence::Item::setContextUID(const OFString &v
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTContrastBolusAgentSequence::Item::setMappingResource(const OFStri
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTContrastBolusAgentSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTContrastBolusAgentSequence::DRTContrastBolusAgentSequence(const OFBool emptyDefaultSequence)
index 65f7500f8b249322f9137230eddd232804523c75..1eac2efb32ef269a3794de79a8bc2903210a63f9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 41b4a1be87171f2a5294a50497e73974cc709032..f86a67006a2ffe4e2693abd042f579519e037d9d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b9e381ba60bf99af00c56b6224b9454c33c5a092..806f29015415eb4b3c26ba454842bf075cbfca23 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0122ee26b6f789f10eb30a9d4266466cc2c19557..560165cd0c97e547b4954cb5ed224ec74276211e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 012b8e147438a1e7baf1e5075e9581c4f83f65c8..07a8ef8e14f22ef7954707163acd93a2b8d1c16d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1a6cf0a1c59443d7002ef88fb5b1f454869e2661..1cef0f200cf85ee986197cad4cf40fdc415a4932 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dd20fb09fdd28b3111fa5ab0efd3c6eccd64de3e..714aa7b54195d69efe0958ae2d9f784530d75142 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5e3614b4afdf2c9a02a5b7e2c73f2b1b8e5a00a2..b5719c40766b6495269d71f764618341e33b685f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 763d1fb5ab818f71b7c304a1a2508add93e9564e..0a5a501668ac255276e632d1585b952ec7241666 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 88b053b196fec284feb16f3a187127ebafe5815b..2f23b0d1a55ab72b3e85583e9c5bd2c6e2cac310 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTBreedRegistryCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTBreedRegistryCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::Item::operator
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTBreedRegistryCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTBreedRegistryCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTBreedRegistryCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "BreedRegistryCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "BreedRegistryCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "BreedRegistryCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTBreedRegistryCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "BreedRegistryCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "BreedRegistryCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "BreedRegistryCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTBreedRegistryCodeSequence::Item::getContextUID(OFString &value, c
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResource(OFString &val
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTBreedRegistryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTBreedRegistryCodeSequence::Item::setContextUID(const OFString &va
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResource(const OFStrin
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBreedRegistryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTBreedRegistryCodeSequence::DRTBreedRegistryCodeSequence(const OFBool emptyDefaultSequence)
index 2e9f9fc639fd8239ad5805dedd662ed20bdfb96d..98b584bcb3d7c42ee4d25d2b273eba5d2fe78aac 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8a7fb379bf224c695ce7de58fa47be3f4028769a..67f54168f7dd3cfb86b164ba8509c55f4fa3ee7b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6760ddd6770acff6ee23f5485b1d7472ee217af0..f9e42e8c755a8b8e0c92f73e0c69858bc7db68e6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbss.cc b/dcmrt/libsrc/drtbss.cc
new file mode 100644 (file)
index 0000000..d72e2d2
--- /dev/null
@@ -0,0 +1,607 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTBlockSlabSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtbss.h"
+
+
+// --- item class ---
+
+DRTBlockSlabSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    BlockSlabNumber(DCM_BlockSlabNumber),
+    BlockSlabThickness(DCM_BlockSlabThickness)
+{
+}
+
+
+DRTBlockSlabSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    BlockSlabNumber(copy.BlockSlabNumber),
+    BlockSlabThickness(copy.BlockSlabThickness)
+{
+}
+
+
+DRTBlockSlabSequence::Item::~Item()
+{
+}
+
+
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        BlockSlabNumber = copy.BlockSlabNumber;
+        BlockSlabThickness = copy.BlockSlabThickness;
+    }
+    return *this;
+}
+
+
+void DRTBlockSlabSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        BlockSlabNumber.clear();
+        BlockSlabThickness.clear();
+        AccessoryCode.clear();
+    }
+}
+
+
+OFBool DRTBlockSlabSequence::Item::isEmpty()
+{
+    return BlockSlabNumber.isEmpty() &&
+           BlockSlabThickness.isEmpty() &&
+           AccessoryCode.isEmpty();
+}
+
+
+OFBool DRTBlockSlabSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, BlockSlabNumber, "1", "1", "BlockSlabSequence");
+        getAndCheckElementFromDataset(item, BlockSlabThickness, "1", "3", "BlockSlabSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSlabSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(BlockSlabNumber), "1", "1", "BlockSlabSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BlockSlabThickness), "1", "3", "BlockSlabSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSlabSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::getBlockSlabNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, BlockSlabNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::getBlockSlabThickness(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockSlabThickness, value, pos);
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::getBlockSlabThickness(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BlockSlabThickness).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::setBlockSlabNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return BlockSlabNumber.putUint16(value, pos);
+}
+
+
+OFCondition DRTBlockSlabSequence::Item::setBlockSlabThickness(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockSlabThickness.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTBlockSlabSequence::DRTBlockSlabSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTBlockSlabSequence::DRTBlockSlabSequence(const DRTBlockSlabSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTBlockSlabSequence &DRTBlockSlabSequence::operator=(const DRTBlockSlabSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTBlockSlabSequence::~DRTBlockSlabSequence()
+{
+    clear();
+}
+
+
+void DRTBlockSlabSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTBlockSlabSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTBlockSlabSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTBlockSlabSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTBlockSlabSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTBlockSlabSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTBlockSlabSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTBlockSlabSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::read(DcmItem &dataset,
+                                       const OFString &card,
+                                       const OFString &type,
+                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_BlockSlabSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_BlockSlabSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSlabSequence::write(DcmItem &dataset,
+                                        const OFString &card,
+                                        const OFString &type,
+                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BlockSlabSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index ab39d1bf79c343d61e450a4dc46c582e4a9f6182..271e85da53a51a514698cdf19d12e58616f58d60 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -24,6 +24,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const OFBool emptyDefaul
     AverageBeamDosePointDepth(DCM_AverageBeamDosePointDepth),
     AverageBeamDosePointEquivalentDepth(DCM_AverageBeamDosePointEquivalentDepth),
     AverageBeamDosePointSSD(DCM_AverageBeamDosePointSSD),
+    AverageBeamDosePointSourceToExternalContourSurfaceDistance(DCM_AverageBeamDosePointSourceToExternalContourSurfaceDistance),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     ReferencedControlPointIndex(DCM_ReferencedControlPointIndex)
 {
@@ -35,6 +36,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const Item &copy)
     AverageBeamDosePointDepth(copy.AverageBeamDosePointDepth),
     AverageBeamDosePointEquivalentDepth(copy.AverageBeamDosePointEquivalentDepth),
     AverageBeamDosePointSSD(copy.AverageBeamDosePointSSD),
+    AverageBeamDosePointSourceToExternalContourSurfaceDistance(copy.AverageBeamDosePointSourceToExternalContourSurfaceDistance),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     ReferencedControlPointIndex(copy.ReferencedControlPointIndex)
 {
@@ -54,6 +56,7 @@ DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationContro
         AverageBeamDosePointDepth = copy.AverageBeamDosePointDepth;
         AverageBeamDosePointEquivalentDepth = copy.AverageBeamDosePointEquivalentDepth;
         AverageBeamDosePointSSD = copy.AverageBeamDosePointSSD;
+        AverageBeamDosePointSourceToExternalContourSurfaceDistance = copy.AverageBeamDosePointSourceToExternalContourSurfaceDistance;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         ReferencedControlPointIndex = copy.ReferencedControlPointIndex;
     }
@@ -71,6 +74,7 @@ void DRTBeamDoseVerificationControlPointSequence::Item::clear()
         AverageBeamDosePointDepth.clear();
         AverageBeamDosePointEquivalentDepth.clear();
         AverageBeamDosePointSSD.clear();
+        AverageBeamDosePointSourceToExternalContourSurfaceDistance.clear();
     }
 }
 
@@ -81,7 +85,8 @@ OFBool DRTBeamDoseVerificationControlPointSequence::Item::isEmpty()
            ReferencedControlPointIndex.isEmpty() &&
            AverageBeamDosePointDepth.isEmpty() &&
            AverageBeamDosePointEquivalentDepth.isEmpty() &&
-           AverageBeamDosePointSSD.isEmpty();
+           AverageBeamDosePointSSD.isEmpty() &&
+           AverageBeamDosePointSourceToExternalContourSurfaceDistance.isEmpty();
 }
 
 
@@ -103,6 +108,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::read(DcmItem &ite
         getAndCheckElementFromDataset(item, AverageBeamDosePointDepth, "1", "2C", "BeamDoseVerificationControlPointSequence");
         getAndCheckElementFromDataset(item, AverageBeamDosePointEquivalentDepth, "1", "2C", "BeamDoseVerificationControlPointSequence");
         getAndCheckElementFromDataset(item, AverageBeamDosePointSSD, "1", "2C", "BeamDoseVerificationControlPointSequence");
+        getAndCheckElementFromDataset(item, AverageBeamDosePointSourceToExternalContourSurfaceDistance, "1", "3", "BeamDoseVerificationControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -120,6 +126,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::write(DcmItem &it
         addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointDepth), "1", "2C", "BeamDoseVerificationControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointEquivalentDepth), "1", "2C", "BeamDoseVerificationControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointSSD), "1", "2C", "BeamDoseVerificationControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(AverageBeamDosePointSourceToExternalContourSurfaceDistance), "1", "3", "BeamDoseVerificationControlPointSequence");
     }
     return result;
 }
@@ -152,6 +159,15 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDos
 }
 
 
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDosePointSourceToExternalContourSurfaceDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, AverageBeamDosePointSourceToExternalContourSurfaceDistance).getFloat32(value, pos);
+}
+
+
 OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getCumulativeMetersetWeight(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -215,6 +231,15 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDos
 }
 
 
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDosePointSourceToExternalContourSurfaceDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return AverageBeamDosePointSourceToExternalContourSurfaceDistance.putFloat32(value, pos);
+}
+
+
 OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setCumulativeMetersetWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index 65c6b1c721a3f1fd30c554e94c20cc49e3634ea5..bc815f021d3c31bbd2020cff3e2bc330756a269f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -32,7 +32,11 @@ DRTContrastBolusAdministrationRouteSequence::Item::Item(const OFBool emptyDefaul
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -50,7 +54,11 @@ DRTContrastBolusAdministrationRouteSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -76,7 +84,11 @@ DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministratio
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTContrastBolusAdministrationRouteSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTContrastBolusAdministrationRouteSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::read(DcmItem &ite
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ContrastBolusAdministrationRouteSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
@@ -157,13 +181,17 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::write(DcmItem &it
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ContrastBolusAdministrationRouteSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
@@ -264,6 +292,15 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getContextUID(OFS
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourc
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setContextUID(con
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResourc
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTContrastBolusAdministrationRouteSequence::DRTContrastBolusAdministrationRouteSequence(const OFBool emptyDefaultSequence)
index e6512cd6a2a5dbe07d980042b5f43a1e7c35eb11..979f490e9c5cab2a965a6a5b332dd8b5448ad3e9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTConceptCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTConceptCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::Item::operator=(const Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTConceptCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTConceptCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTConceptCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ConceptCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ConceptCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ConceptCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ConceptCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTConceptCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ConceptCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ConceptCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ConceptCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ConceptCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTConceptCodeSequence::Item::getContextUID(OFString &value, const s
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, co
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTConceptCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTConceptCodeSequence::Item::setContextUID(const OFString &value, c
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &val
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTConceptCodeSequence::DRTConceptCodeSequence(const OFBool emptyDefaultSequence)
index 878f37b8544a46c1b0695917a62719169e29dce1..731881adad237b6d283d59ff61ede8c42f5a0775 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 05f2d111d54376a0e28c7d03af990e762d64bced..5ffe6cfc02fd5568c28b7385323a059a335c9468 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 13d7fd8a1d9564ae0b54ab5ea39ea7d4765797e3..a0cee02db55b4a837b25779473616294d5535fb7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 187983324e5496c175ba68399248596ab02f3d60..a216b012301fc5ce8b580bc4e917b7c3cddb0bf1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index afc07ab2f774893d3e58ed0365a21230c666466c..d02068df2d08037d62daaf9af36c35c27cc8abf1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 057d127ec08b442890c58fb4096a73d92556bd72..db289e691881bec443056bfab7a314ac1091a12e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index add98f87803070e2ddfe57795185e207e273b2c8..398666442985d0706035ac159daa8282056eed0e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTConceptNameCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTConceptNameCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::Item::operator=(co
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTConceptNameCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTConceptNameCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTConceptNameCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ConceptNameCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ConceptNameCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ConceptNameCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTConceptNameCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ConceptNameCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ConceptNameCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ConceptNameCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTConceptNameCodeSequence::Item::getContextUID(OFString &value, con
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTConceptNameCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTConceptNameCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTConceptNameCodeSequence::Item::setContextUID(const OFString &valu
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTConceptNameCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptNameCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTConceptNameCodeSequence::DRTConceptNameCodeSequence(const OFBool emptyDefaultSequence)
index 4dae5fb80f89b7d08974c449b1f5fb6f98aa0643..d2b31cf3f24a090dfa2e9dccebbf2cad5ed58b63 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fc837c90d518450435111e244c664bc874e28c90..09b601ce76e9656865046b9c7cf1768108b500da 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcpis.cc b/dcmrt/libsrc/drtcpis.cc
new file mode 100644 (file)
index 0000000..8ca6f86
--- /dev/null
@@ -0,0 +1,674 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTConsultingPhysicianIdentificationSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtcpis.h"
+
+
+// --- item class ---
+
+DRTConsultingPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    InstitutionAddress(DCM_InstitutionAddress),
+    InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    InstitutionName(DCM_InstitutionName),
+    PersonAddress(DCM_PersonAddress),
+    PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
+    PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
+{
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    InstitutionAddress(copy.InstitutionAddress),
+    InstitutionCodeSequence(copy.InstitutionCodeSequence),
+    InstitutionName(copy.InstitutionName),
+    PersonAddress(copy.PersonAddress),
+    PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
+    PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
+{
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::Item::~Item()
+{
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        InstitutionAddress = copy.InstitutionAddress;
+        InstitutionCodeSequence = copy.InstitutionCodeSequence;
+        InstitutionName = copy.InstitutionName;
+        PersonAddress = copy.PersonAddress;
+        PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
+        PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
+    }
+    return *this;
+}
+
+
+void DRTConsultingPhysicianIdentificationSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        PersonIdentificationCodeSequence.clear();
+        PersonAddress.clear();
+        PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
+        InstitutionName.clear();
+        InstitutionAddress.clear();
+        InstitutionCodeSequence.clear();
+    }
+}
+
+
+OFBool DRTConsultingPhysicianIdentificationSequence::Item::isEmpty()
+{
+    return PersonIdentificationCodeSequence.isEmpty() &&
+           PersonAddress.isEmpty() &&
+           PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
+           InstitutionName.isEmpty() &&
+           InstitutionAddress.isEmpty() &&
+           InstitutionCodeSequence.isEmpty();
+}
+
+
+OFBool DRTConsultingPhysicianIdentificationSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        PersonIdentificationCodeSequence.read(item, "1-n", "1", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        InstitutionCodeSequence.read(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionAddress(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionAddress, value, pos);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionName, value, pos);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonAddress, value, pos);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelephoneNumbers, value, pos);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionAddress(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = InstitutionAddress.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonAddress.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = PersonTelephoneNumbers.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTConsultingPhysicianIdentificationSequence::DRTConsultingPhysicianIdentificationSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::DRTConsultingPhysicianIdentificationSequence(const DRTConsultingPhysicianIdentificationSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTConsultingPhysicianIdentificationSequence &DRTConsultingPhysicianIdentificationSequence::operator=(const DRTConsultingPhysicianIdentificationSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::~DRTConsultingPhysicianIdentificationSequence()
+{
+    clear();
+}
+
+
+void DRTConsultingPhysicianIdentificationSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTConsultingPhysicianIdentificationSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTConsultingPhysicianIdentificationSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTConsultingPhysicianIdentificationSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::read(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ConsultingPhysicianIdentificationSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ConsultingPhysicianIdentificationSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::write(DcmItem &dataset,
+                                                                const OFString &card,
+                                                                const OFString &type,
+                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConsultingPhysicianIdentificationSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 259c96c87b82768370e3860c9d5ad0f07664b7f5..c3d295a191006aca7f4d292c001c186a5508e55b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -27,6 +27,7 @@ DRTControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     ControlPointIndex(DCM_ControlPointIndex),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     DoseRateSet(DCM_DoseRateSet),
+    ExternalContourEntryPoint(DCM_ExternalContourEntryPoint),
     GantryAngle(DCM_GantryAngle),
     GantryPitchAngle(DCM_GantryPitchAngle),
     GantryPitchRotationDirection(DCM_GantryPitchRotationDirection),
@@ -37,6 +38,7 @@ DRTControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     PatientSupportRotationDirection(DCM_PatientSupportRotationDirection),
     ReferencedDoseReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedDoseSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    SourceToExternalContourDistance(DCM_SourceToExternalContourDistance),
     SourceToSurfaceDistance(DCM_SourceToSurfaceDistance),
     SurfaceEntryPoint(DCM_SurfaceEntryPoint),
     TableTopEccentricAngle(DCM_TableTopEccentricAngle),
@@ -62,6 +64,7 @@ DRTControlPointSequence::Item::Item(const Item &copy)
     ControlPointIndex(copy.ControlPointIndex),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     DoseRateSet(copy.DoseRateSet),
+    ExternalContourEntryPoint(copy.ExternalContourEntryPoint),
     GantryAngle(copy.GantryAngle),
     GantryPitchAngle(copy.GantryPitchAngle),
     GantryPitchRotationDirection(copy.GantryPitchRotationDirection),
@@ -72,6 +75,7 @@ DRTControlPointSequence::Item::Item(const Item &copy)
     PatientSupportRotationDirection(copy.PatientSupportRotationDirection),
     ReferencedDoseReferenceSequence(copy.ReferencedDoseReferenceSequence),
     ReferencedDoseSequence(copy.ReferencedDoseSequence),
+    SourceToExternalContourDistance(copy.SourceToExternalContourDistance),
     SourceToSurfaceDistance(copy.SourceToSurfaceDistance),
     SurfaceEntryPoint(copy.SurfaceEntryPoint),
     TableTopEccentricAngle(copy.TableTopEccentricAngle),
@@ -105,6 +109,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::Item::operator=(const It
         ControlPointIndex = copy.ControlPointIndex;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         DoseRateSet = copy.DoseRateSet;
+        ExternalContourEntryPoint = copy.ExternalContourEntryPoint;
         GantryAngle = copy.GantryAngle;
         GantryPitchAngle = copy.GantryPitchAngle;
         GantryPitchRotationDirection = copy.GantryPitchRotationDirection;
@@ -115,6 +120,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::Item::operator=(const It
         PatientSupportRotationDirection = copy.PatientSupportRotationDirection;
         ReferencedDoseReferenceSequence = copy.ReferencedDoseReferenceSequence;
         ReferencedDoseSequence = copy.ReferencedDoseSequence;
+        SourceToExternalContourDistance = copy.SourceToExternalContourDistance;
         SourceToSurfaceDistance = copy.SourceToSurfaceDistance;
         SurfaceEntryPoint = copy.SurfaceEntryPoint;
         TableTopEccentricAngle = copy.TableTopEccentricAngle;
@@ -166,7 +172,9 @@ void DRTControlPointSequence::Item::clear()
         TableTopLateralPosition.clear();
         IsocenterPosition.clear();
         SurfaceEntryPoint.clear();
+        ExternalContourEntryPoint.clear();
         SourceToSurfaceDistance.clear();
+        SourceToExternalContourDistance.clear();
     }
 }
 
@@ -201,7 +209,9 @@ OFBool DRTControlPointSequence::Item::isEmpty()
            TableTopLateralPosition.isEmpty() &&
            IsocenterPosition.isEmpty() &&
            SurfaceEntryPoint.isEmpty() &&
-           SourceToSurfaceDistance.isEmpty();
+           ExternalContourEntryPoint.isEmpty() &&
+           SourceToSurfaceDistance.isEmpty() &&
+           SourceToExternalContourDistance.isEmpty();
 }
 
 
@@ -246,7 +256,9 @@ OFCondition DRTControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, TableTopLateralPosition, "1", "2C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, IsocenterPosition, "3", "2C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, SurfaceEntryPoint, "3", "3", "ControlPointSequence");
+        getAndCheckElementFromDataset(item, ExternalContourEntryPoint, "3", "3", "ControlPointSequence");
         getAndCheckElementFromDataset(item, SourceToSurfaceDistance, "1", "3", "ControlPointSequence");
+        getAndCheckElementFromDataset(item, SourceToExternalContourDistance, "1", "3", "ControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -287,7 +299,9 @@ OFCondition DRTControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(TableTopLateralPosition), "1", "2C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(IsocenterPosition), "3", "2C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(SurfaceEntryPoint), "3", "3", "ControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(ExternalContourEntryPoint), "3", "3", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToSurfaceDistance), "1", "3", "ControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToExternalContourDistance), "1", "3", "ControlPointSequence");
     }
     return result;
 }
@@ -374,6 +388,15 @@ OFCondition DRTControlPointSequence::Item::getDoseRateSet(Float64 &value, const
 }
 
 
+OFCondition DRTControlPointSequence::Item::getExternalContourEntryPoint(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, ExternalContourEntryPoint).getFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::getGantryAngle(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -491,6 +514,15 @@ OFCondition DRTControlPointSequence::Item::getPatientSupportRotationDirection(OF
 }
 
 
+OFCondition DRTControlPointSequence::Item::getSourceToExternalContourDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToExternalContourDistance).getFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::getSourceToSurfaceDistance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -736,6 +768,15 @@ OFCondition DRTControlPointSequence::Item::setDoseRateSet(const OFString &value,
 }
 
 
+OFCondition DRTControlPointSequence::Item::setExternalContourEntryPoint(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ExternalContourEntryPoint.putFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::setGantryAngle(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -836,6 +877,15 @@ OFCondition DRTControlPointSequence::Item::setPatientSupportRotationDirection(co
 }
 
 
+OFCondition DRTControlPointSequence::Item::setSourceToExternalContourDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToExternalContourDistance.putFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::setSourceToSurfaceDistance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index 63800395bd5b97bbfef944028c8f348e194737f4..c39b275c6e69e562140bc97cde8dd0324c33be2d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3c92fb9687bd9fbb971789ef816c8826471933d4..c9bb6d260b1302fc44d92fe09f74288ba36dc8ca 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ac20c08ea635633ffbec1238872bb50f4b298c89..4fc8d7be83afeb82e72e528fb53c8c0451a1cd3f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index e8714da65ac015b6492b77a495722fd8e7d4a029..7504daffa58d22f3b5cfff1c432e35dd7dde0158 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c57209e71797b95727fda12edf30ec5b8bffe828..6e2b1e403d4e520d8e35aa6ab45f87cdc7e05652 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTChannelSourceSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTChannelSourceSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTChannelSourceSequence::Item &DRTChannelSourceSequence::Item::operator=(const
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTChannelSourceSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTChannelSourceSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTChannelSourceSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ChannelSourceSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ChannelSourceSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ChannelSourceSequence");
@@ -151,13 +175,17 @@ OFCondition DRTChannelSourceSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ChannelSourceSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ChannelSourceSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ChannelSourceSequence");
@@ -257,6 +285,15 @@ OFCondition DRTChannelSourceSequence::Item::getContextUID(OFString &value, const
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTChannelSourceSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTChannelSourceSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTChannelSourceSequence::Item::setContextUID(const OFString &value,
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTChannelSourceSequence::Item::setMappingResource(const OFString &v
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTChannelSourceSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTChannelSourceSequence::DRTChannelSourceSequence(const OFBool emptyDefaultSequence)
index fe2503b51948fbadfe3a941c0f78ce80e255a1ae..736bd6d3b3c5cb87001d3a9040ab81de693df0fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTDerivationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTDerivationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::Item::operator=(cons
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTDerivationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTDerivationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTDerivationCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DerivationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DerivationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DerivationCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTDerivationCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DerivationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DerivationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DerivationCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTDerivationCodeSequence::Item::getContextUID(OFString &value, cons
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTDerivationCodeSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDerivationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTDerivationCodeSequence::Item::setContextUID(const OFString &value
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTDerivationCodeSequence::Item::setMappingResource(const OFString &
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDerivationCodeSequence::DRTDerivationCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdias.cc b/dcmrt/libsrc/drtdias.cc
new file mode 100644 (file)
index 0000000..70d3afb
--- /dev/null
@@ -0,0 +1,569 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTDeidentificationActionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtdias.h"
+
+
+// --- item class ---
+
+DRTDeidentificationActionSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    DeidentificationAction(DCM_DeidentificationAction),
+    IdentifyingPrivateElements(DCM_IdentifyingPrivateElements)
+{
+}
+
+
+DRTDeidentificationActionSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    DeidentificationAction(copy.DeidentificationAction),
+    IdentifyingPrivateElements(copy.IdentifyingPrivateElements)
+{
+}
+
+
+DRTDeidentificationActionSequence::Item::~Item()
+{
+}
+
+
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        DeidentificationAction = copy.DeidentificationAction;
+        IdentifyingPrivateElements = copy.IdentifyingPrivateElements;
+    }
+    return *this;
+}
+
+
+void DRTDeidentificationActionSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        IdentifyingPrivateElements.clear();
+        DeidentificationAction.clear();
+    }
+}
+
+
+OFBool DRTDeidentificationActionSequence::Item::isEmpty()
+{
+    return IdentifyingPrivateElements.isEmpty() &&
+           DeidentificationAction.isEmpty();
+}
+
+
+OFBool DRTDeidentificationActionSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, IdentifyingPrivateElements, "1-n", "1", "DeidentificationActionSequence");
+        getAndCheckElementFromDataset(item, DeidentificationAction, "1", "1", "DeidentificationActionSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(IdentifyingPrivateElements), "1-n", "1", "DeidentificationActionSequence");
+        addElementToDataset(result, item, new DcmCodeString(DeidentificationAction), "1", "1", "DeidentificationActionSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::Item::getDeidentificationAction(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeidentificationAction, value, pos);
+}
+
+
+OFCondition DRTDeidentificationActionSequence::Item::getIdentifyingPrivateElements(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, IdentifyingPrivateElements).getUint16(value, pos);
+}
+
+
+OFCondition DRTDeidentificationActionSequence::Item::setDeidentificationAction(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeidentificationAction.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::Item::setIdentifyingPrivateElements(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return IdentifyingPrivateElements.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTDeidentificationActionSequence::DRTDeidentificationActionSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTDeidentificationActionSequence::DRTDeidentificationActionSequence(const DRTDeidentificationActionSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTDeidentificationActionSequence &DRTDeidentificationActionSequence::operator=(const DRTDeidentificationActionSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTDeidentificationActionSequence::~DRTDeidentificationActionSequence()
+{
+    clear();
+}
+
+
+void DRTDeidentificationActionSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTDeidentificationActionSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTDeidentificationActionSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTDeidentificationActionSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTDeidentificationActionSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTDeidentificationActionSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTDeidentificationActionSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::read(DcmItem &dataset,
+                                                    const OFString &card,
+                                                    const OFString &type,
+                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_DeidentificationActionSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_DeidentificationActionSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationActionSequence::write(DcmItem &dataset,
+                                                     const OFString &card,
+                                                     const OFString &type,
+                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DeidentificationActionSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index c801b4573ac0ae1deaea2e2a3fd96ccec97a7165..05fcc5b6d10d82112775e6d175b4abc16a1cf68a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTDeidentificationMethodCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTDeidentificationMethodCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequen
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTDeidentificationMethodCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTDeidentificationMethodCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DeidentificationMethodCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DeidentificationMethodCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeidentificationMethodCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DeidentificationMethodCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DeidentificationMethodCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeidentificationMethodCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::getContextUID(OFString
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResource(OFSt
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::setContextUID(const OFS
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResource(cons
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeidentificationMethodCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDeidentificationMethodCodeSequence::DRTDeidentificationMethodCodeSequence(const OFBool emptyDefaultSequence)
index f92c82e6d8a833df79f4c9cd769897b1f50408c5..89620c1847ec7ef566498e6b4fca94dddb551a65 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ea3f650bd6073cac0ee4a97bd6a96dc32e100110..1d28f30a0cbf1e9572328b893d6543083025011b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5f64814055a61cdec2d8c935a1e39d90e1c18b71..aee598079de9bc1cfa40e63a95968dba3c1e7df6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTDoseIOD::DRTDoseIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -169,6 +171,7 @@ DRTDoseIOD::DRTDoseIOD()
     PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit),
     NumberOfFrames(DCM_NumberOfFrames),
     FrameIncrementPointer(DCM_FrameIncrementPointer),
+    StereoPairsPresent(DCM_StereoPairsPresent),
     OverlayRows(DCM_OverlayRows),
     OverlayColumns(DCM_OverlayColumns),
     OverlayType(DCM_OverlayType),
@@ -248,6 +251,7 @@ DRTDoseIOD::DRTDoseIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence(),
     FrameExtractionSequence()
@@ -298,6 +302,8 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -409,6 +415,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit),
     NumberOfFrames(copy.NumberOfFrames),
     FrameIncrementPointer(copy.FrameIncrementPointer),
+    StereoPairsPresent(copy.StereoPairsPresent),
     OverlayRows(copy.OverlayRows),
     OverlayColumns(copy.OverlayColumns),
     OverlayType(copy.OverlayType),
@@ -488,6 +495,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence),
     FrameExtractionSequence(copy.FrameExtractionSequence)
@@ -544,6 +552,8 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -655,6 +665,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit;
         NumberOfFrames = copy.NumberOfFrames;
         FrameIncrementPointer = copy.FrameIncrementPointer;
+        StereoPairsPresent = copy.StereoPairsPresent;
         OverlayRows = copy.OverlayRows;
         OverlayColumns = copy.OverlayColumns;
         OverlayType = copy.OverlayType;
@@ -734,6 +745,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
         FrameExtractionSequence = copy.FrameExtractionSequence;
@@ -785,6 +797,8 @@ void DRTDoseIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -905,6 +919,7 @@ void DRTDoseIOD::clear()
     PixelPaddingRangeLimit.clear();
     NumberOfFrames.clear();
     FrameIncrementPointer.clear();
+    StereoPairsPresent.clear();
     OverlayRows.clear();
     OverlayColumns.clear();
     OverlayType.clear();
@@ -975,6 +990,7 @@ void DRTDoseIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
     FrameExtractionSequence.clear();
@@ -1119,6 +1135,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule");
+            getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule");
         }
 
         // --- OverlayPlaneModule (U) ---
@@ -1247,6 +1264,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1327,6 +1345,8 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1463,6 +1483,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1623,6 +1645,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule");
+            addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule");
         }
 
         // --- OverlayPlaneModule (U) ---
@@ -1744,6 +1767,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1910,7 +1934,8 @@ OFBool DRTDoseIOD::isMultiFrameModulePresent(const OFBool complete)
     } else {
         /* check whether at least one attribute is present */
         return !NumberOfFrames.isEmpty() ||
-               !FrameIncrementPointer.isEmpty();
+               !FrameIncrementPointer.isEmpty() ||
+               !StereoPairsPresent.isEmpty();
     }
 }
 
@@ -2232,6 +2257,12 @@ OFCondition DRTDoseIOD::getCommentsOnThePerformedProcedureStep(OFString &value,
 }
 
 
+OFCondition DRTDoseIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getContentDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentDate, value, pos);
@@ -3261,6 +3292,12 @@ OFCondition DRTDoseIOD::getStationName(OFString &value, const signed long pos) c
 }
 
 
+OFCondition DRTDoseIOD::getStereoPairsPresent(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StereoPairsPresent, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getStructureSetDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StructureSetDate, value, pos);
@@ -3594,6 +3631,15 @@ OFCondition DRTDoseIOD::setCommentsOnThePerformedProcedureStep(const OFString &v
 }
 
 
+OFCondition DRTDoseIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setContentDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -4749,6 +4795,15 @@ OFCondition DRTDoseIOD::setStationName(const OFString &value, const OFBool check
 }
 
 
+OFCondition DRTDoseIOD::setStereoPairsPresent(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StereoPairsPresent.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setStructureSetDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
index 6c7c0f29aa9cc580f9fae7be6b1ba0057267eea8..4cc00b71c4436407d38540fe072b8d5aa2bb1238 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5d0f59dbf817e8cee2de934a60c43babae897bbb..69b00cf1dddaf1c87b57d874c770541d331fc27e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -38,10 +38,14 @@ DRTDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
     DeviceLength(DCM_DeviceLength),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     DeviceVolume(DCM_DeviceVolume),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InterMarkerDistance(DCM_InterMarkerDistance),
+    LongCodeValue(DCM_LongCodeValue),
     Manufacturer(DCM_Manufacturer),
     ManufacturerModelName(DCM_ManufacturerModelName),
-    MappingResource(DCM_MappingResource)
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -65,10 +69,14 @@ DRTDeviceSequence::Item::Item(const Item &copy)
     DeviceLength(copy.DeviceLength),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     DeviceVolume(copy.DeviceVolume),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
     InterMarkerDistance(copy.InterMarkerDistance),
+    LongCodeValue(copy.LongCodeValue),
     Manufacturer(copy.Manufacturer),
     ManufacturerModelName(copy.ManufacturerModelName),
-    MappingResource(copy.MappingResource)
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -100,10 +108,14 @@ DRTDeviceSequence::Item &DRTDeviceSequence::Item::operator=(const Item &copy)
         DeviceLength = copy.DeviceLength;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         DeviceVolume = copy.DeviceVolume;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
         InterMarkerDistance = copy.InterMarkerDistance;
+        LongCodeValue = copy.LongCodeValue;
         Manufacturer = copy.Manufacturer;
         ManufacturerModelName = copy.ManufacturerModelName;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -118,9 +130,13 @@ void DRTDeviceSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -145,9 +161,13 @@ OFBool DRTDeviceSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -178,13 +198,17 @@ OFCondition DRTDeviceSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DeviceSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DeviceSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DeviceSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DeviceSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DeviceSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DeviceSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeviceSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeviceSequence");
@@ -211,13 +235,17 @@ OFCondition DRTDeviceSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DeviceSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DeviceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DeviceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DeviceSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DeviceSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DeviceSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DeviceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeviceSequence");
@@ -435,6 +463,15 @@ OFCondition DRTDeviceSequence::Item::getInterMarkerDistance(Float64 &value, cons
 }
 
 
+OFCondition DRTDeviceSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeviceSequence::Item::getManufacturer(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -462,6 +499,24 @@ OFCondition DRTDeviceSequence::Item::getMappingResource(OFString &value, const s
 }
 
 
+OFCondition DRTDeviceSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDeviceSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeviceSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -696,6 +751,19 @@ OFCondition DRTDeviceSequence::Item::setInterMarkerDistance(const OFString &valu
 }
 
 
+OFCondition DRTDeviceSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDeviceSequence::Item::setManufacturer(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -735,6 +803,32 @@ OFCondition DRTDeviceSequence::Item::setMappingResource(const OFString &value, c
 }
 
 
+OFCondition DRTDeviceSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDeviceSequence::DRTDeviceSequence(const OFBool emptyDefaultSequence)
index f1c829516eda708166ea5f63409bb1d988672b3e..a03182d30910dac0334a7c4b1ccc93a601e98fa5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTDigitalSignaturePurposeCodeSequence::Item::Item(const OFBool emptyDefaultItem
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTDigitalSignaturePurposeCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequ
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTDigitalSignaturePurposeCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTDigitalSignaturePurposeCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DigitalSignaturePurposeCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DigitalSignaturePurposeCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getContextUID(OFString
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResource(OFS
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setContextUID(const OF
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResource(con
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDigitalSignaturePurposeCodeSequence::DRTDigitalSignaturePurposeCodeSequence(const OFBool emptyDefaultSequence)
index fc52d1e6360874e461cf2e10bedcdace0588aeb6..e9e173aec75b67ddf5f19b37debaffc7168d9051 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7df442eebd5c71e814814e20d8b747afc04e9608..328a7650e4385d3c40c80bf7aef31c6c01fb6ce6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6b2b2962707975b13ab03c9257ec673f403e1ec3..eec70c2378401d8d57920b6350798f70a9d024c8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1e429640332817bc1f6f9796def644dbc8f91f2a..53d8069d93e62717124746d96bf4a941dd37becc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtecs.cc b/dcmrt/libsrc/drtecs.cc
new file mode 100644 (file)
index 0000000..4f07d4c
--- /dev/null
@@ -0,0 +1,689 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTEquivalentCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtecs.h"
+
+
+// --- item class ---
+
+DRTEquivalentCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    LongCodeValue(DCM_LongCodeValue),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTEquivalentCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    LongCodeValue(copy.LongCodeValue),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTEquivalentCodeSequence::Item::~Item()
+{
+}
+
+
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        LongCodeValue = copy.LongCodeValue;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTEquivalentCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+    }
+}
+
+
+OFBool DRTEquivalentCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty();
+}
+
+
+OFBool DRTEquivalentCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "EquivalentCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "EquivalentCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTEquivalentCodeSequence::DRTEquivalentCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTEquivalentCodeSequence::DRTEquivalentCodeSequence(const DRTEquivalentCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTEquivalentCodeSequence &DRTEquivalentCodeSequence::operator=(const DRTEquivalentCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTEquivalentCodeSequence::~DRTEquivalentCodeSequence()
+{
+    clear();
+}
+
+
+void DRTEquivalentCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTEquivalentCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTEquivalentCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTEquivalentCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTEquivalentCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTEquivalentCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::read(DcmItem &dataset,
+                                            const OFString &card,
+                                            const OFString &type,
+                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_EquivalentCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_EquivalentCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentCodeSequence::write(DcmItem &dataset,
+                                             const OFString &card,
+                                             const OFString &type,
+                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EquivalentCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 6f9abb3ddae9ce7388fd4a2a79d0ee726e39cd20..58d00279bcc4cfc8aba305282331bda9a2161c06 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2ede6de112ec1ce9962705d8a2e4be97661b5af4..3a69a6347595cd690cfc525382242d4d7a2b0388 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 45ebb4dbac1d19f74305bd59e3b9b725fddf0d1b..add7207f2fe6aa457188daeb56bf57cdfb2a8cf2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 62aa674ad78a9e90073f9a3561f519d46b04bbfd..c82bde54ec47eaafd392744bbab5ede655261188 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d34ae1ce3e19d0d6d20fb9f9a7a58e8a5ae1fe0d..6bfe62a743844e33d21702b84d45b615e39fc4f6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bf8108750f4962ad07717ebfc22ca3f223c1569f..a0e73bb8dab7e82baa41bf9fcefc1e0d8c27ba97 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 676f2e1c3cb185a5f1196836116737cdf7765ed5..75400c7fa1875b04a7f68ee9917f853cbafc998f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a59e6ca6a852393d3e9917a33bc8c108b68d9c5e..613c9f25e9a6a8568f7bb83c0eba5fc96e813432 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTGeneralAccessorySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fd210411f25435750fc9fb5d0eb95f65697d2b9e..129979a744abdc7b0d531fafb0a13bad9aeda20f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ddd93bf08dddd5d7ef82aad5fc17f65388f296af..c206dae8267efb97e42d3a7e1cfc36377ad43723 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fc7571f7e89ccaca21f94ce84534d84a8989050c..6e0bb83a0c5c3b601c8f24d5103107a23e2f88b7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 14b032dc05a7a06b6704f862eef885fcf9b302a1..0cc4309dc014ad26206565d64c6ab908b502b306 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bb1ccf1f9f40f696511ab470625244f8c151a2a7..a58a0380d05922f3f5fcc1e4522f55a1e42d414e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -28,11 +28,13 @@ DRTIonBlockSequence::Item::Item(const OFBool emptyDefaultItem)
     BlockName(DCM_BlockName),
     BlockNumber(DCM_BlockNumber),
     BlockNumberOfPoints(DCM_BlockNumberOfPoints),
+    BlockSlabSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BlockThickness(DCM_BlockThickness),
     BlockTrayID(DCM_BlockTrayID),
     BlockType(DCM_BlockType),
     IsocenterToBlockTrayDistance(DCM_IsocenterToBlockTrayDistance),
-    MaterialID(DCM_MaterialID)
+    MaterialID(DCM_MaterialID),
+    NumberOfBlockSlabItems(DCM_NumberOfBlockSlabItems)
 {
 }
 
@@ -46,11 +48,13 @@ DRTIonBlockSequence::Item::Item(const Item &copy)
     BlockName(copy.BlockName),
     BlockNumber(copy.BlockNumber),
     BlockNumberOfPoints(copy.BlockNumberOfPoints),
+    BlockSlabSequence(copy.BlockSlabSequence),
     BlockThickness(copy.BlockThickness),
     BlockTrayID(copy.BlockTrayID),
     BlockType(copy.BlockType),
     IsocenterToBlockTrayDistance(copy.IsocenterToBlockTrayDistance),
-    MaterialID(copy.MaterialID)
+    MaterialID(copy.MaterialID),
+    NumberOfBlockSlabItems(copy.NumberOfBlockSlabItems)
 {
 }
 
@@ -72,11 +76,13 @@ DRTIonBlockSequence::Item &DRTIonBlockSequence::Item::operator=(const Item &copy
         BlockName = copy.BlockName;
         BlockNumber = copy.BlockNumber;
         BlockNumberOfPoints = copy.BlockNumberOfPoints;
+        BlockSlabSequence = copy.BlockSlabSequence;
         BlockThickness = copy.BlockThickness;
         BlockTrayID = copy.BlockTrayID;
         BlockType = copy.BlockType;
         IsocenterToBlockTrayDistance = copy.IsocenterToBlockTrayDistance;
         MaterialID = copy.MaterialID;
+        NumberOfBlockSlabItems = copy.NumberOfBlockSlabItems;
     }
     return *this;
 }
@@ -99,6 +105,8 @@ void DRTIonBlockSequence::Item::clear()
         BlockThickness.clear();
         BlockNumberOfPoints.clear();
         BlockData.clear();
+        NumberOfBlockSlabItems.clear();
+        BlockSlabSequence.clear();
     }
 }
 
@@ -116,7 +124,9 @@ OFBool DRTIonBlockSequence::Item::isEmpty()
            MaterialID.isEmpty() &&
            BlockThickness.isEmpty() &&
            BlockNumberOfPoints.isEmpty() &&
-           BlockData.isEmpty();
+           BlockData.isEmpty() &&
+           NumberOfBlockSlabItems.isEmpty() &&
+           BlockSlabSequence.isEmpty();
 }
 
 
@@ -145,6 +155,8 @@ OFCondition DRTIonBlockSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, BlockThickness, "1", "1", "IonBlockSequence");
         getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "1", "IonBlockSequence");
         getAndCheckElementFromDataset(item, BlockData, "2-2n", "1", "IonBlockSequence");
+        getAndCheckElementFromDataset(item, NumberOfBlockSlabItems, "1", "3", "IonBlockSequence");
+        BlockSlabSequence.read(item, "1-n", "1C", "IonBlockSequence");
         result = EC_Normal;
     }
     return result;
@@ -169,6 +181,8 @@ OFCondition DRTIonBlockSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "1", "IonBlockSequence");
         addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "1", "IonBlockSequence");
         addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "1", "IonBlockSequence");
+        addElementToDataset(result, item, new DcmIntegerString(NumberOfBlockSlabItems), "1", "3", "IonBlockSequence");
+        if (result.good()) result = BlockSlabSequence.write(item, "1-n", "1C", "IonBlockSequence");
     }
     return result;
 }
@@ -327,6 +341,24 @@ OFCondition DRTIonBlockSequence::Item::getMaterialID(OFString &value, const sign
 }
 
 
+OFCondition DRTIonBlockSequence::Item::getNumberOfBlockSlabItems(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumberOfBlockSlabItems, value, pos);
+}
+
+
+OFCondition DRTIonBlockSequence::Item::getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, NumberOfBlockSlabItems).getSint32(value, pos);
+}
+
+
 OFCondition DRTIonBlockSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -479,6 +511,19 @@ OFCondition DRTIonBlockSequence::Item::setMaterialID(const OFString &value, cons
 }
 
 
+OFCondition DRTIonBlockSequence::Item::setNumberOfBlockSlabItems(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = NumberOfBlockSlabItems.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTIonBlockSequence::DRTIonBlockSequence(const OFBool emptyDefaultSequence)
index 0d8854d9db5ac0d2ae98644a025619b5e8119428..88cffe1948676b94be065182d96b9b5060ec6558 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 893ebf9b74a0142170445edfddf915baa8875785..5645f8142108c6f181c5ce0a726b3cfb3d831a4a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b29ef0286b42ef5c13ad7b1289d97414aaa5fa63..28430e1ba01b6abfc75275fbebd1c47e577c8229 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTIonControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamLimitingDeviceRotationDirection(DCM_BeamLimitingDeviceRotationDirection),
     ControlPointIndex(DCM_ControlPointIndex),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
+    ExternalContourEntryPoint(DCM_ExternalContourEntryPoint),
     GantryAngle(DCM_GantryAngle),
     GantryPitchAngle(DCM_GantryPitchAngle),
     GantryPitchRotationDirection(DCM_GantryPitchRotationDirection),
@@ -68,6 +69,7 @@ DRTIonControlPointSequence::Item::Item(const Item &copy)
     BeamLimitingDeviceRotationDirection(copy.BeamLimitingDeviceRotationDirection),
     ControlPointIndex(copy.ControlPointIndex),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
+    ExternalContourEntryPoint(copy.ExternalContourEntryPoint),
     GantryAngle(copy.GantryAngle),
     GantryPitchAngle(copy.GantryPitchAngle),
     GantryPitchRotationDirection(copy.GantryPitchRotationDirection),
@@ -118,6 +120,7 @@ DRTIonControlPointSequence::Item &DRTIonControlPointSequence::Item::operator=(co
         BeamLimitingDeviceRotationDirection = copy.BeamLimitingDeviceRotationDirection;
         ControlPointIndex = copy.ControlPointIndex;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
+        ExternalContourEntryPoint = copy.ExternalContourEntryPoint;
         GantryAngle = copy.GantryAngle;
         GantryPitchAngle = copy.GantryPitchAngle;
         GantryPitchRotationDirection = copy.GantryPitchRotationDirection;
@@ -195,6 +198,7 @@ void DRTIonControlPointSequence::Item::clear()
         SnoutPosition.clear();
         IsocenterPosition.clear();
         SurfaceEntryPoint.clear();
+        ExternalContourEntryPoint.clear();
     }
 }
 
@@ -236,7 +240,8 @@ OFBool DRTIonControlPointSequence::Item::isEmpty()
            TableTopLateralPosition.isEmpty() &&
            SnoutPosition.isEmpty() &&
            IsocenterPosition.isEmpty() &&
-           SurfaceEntryPoint.isEmpty();
+           SurfaceEntryPoint.isEmpty() &&
+           ExternalContourEntryPoint.isEmpty();
 }
 
 
@@ -289,6 +294,7 @@ OFCondition DRTIonControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, SnoutPosition, "1", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, IsocenterPosition, "3", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, SurfaceEntryPoint, "3", "3", "IonControlPointSequence");
+        getAndCheckElementFromDataset(item, ExternalContourEntryPoint, "3", "3", "IonControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -337,6 +343,7 @@ OFCondition DRTIonControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmFloatingPointSingle(SnoutPosition), "1", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(IsocenterPosition), "3", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(SurfaceEntryPoint), "3", "3", "IonControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(ExternalContourEntryPoint), "3", "3", "IonControlPointSequence");
     }
     return result;
 }
@@ -405,6 +412,15 @@ OFCondition DRTIonControlPointSequence::Item::getCumulativeMetersetWeight(Float6
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::getExternalContourEntryPoint(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, ExternalContourEntryPoint).getFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::getGantryAngle(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -808,6 +824,15 @@ OFCondition DRTIonControlPointSequence::Item::setCumulativeMetersetWeight(const
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::setExternalContourEntryPoint(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ExternalContourEntryPoint.putFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::setGantryAngle(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index 68398be8b30efffb3b6f8f46ef2fb8fb6eff3740..cc4ab0a0db61fe1c17f97cd31eefde963c8ab534 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTInstitutionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTInstitutionCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::Item::operator=(co
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTInstitutionCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTInstitutionCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTInstitutionCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "InstitutionCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "InstitutionCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "InstitutionCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTInstitutionCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "InstitutionCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "InstitutionCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "InstitutionCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTInstitutionCodeSequence::Item::getContextUID(OFString &value, con
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTInstitutionCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTInstitutionCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTInstitutionCodeSequence::Item::setContextUID(const OFString &valu
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTInstitutionCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTInstitutionCodeSequence::DRTInstitutionCodeSequence(const OFBool emptyDefaultSequence)
index 2f824d61580b71fe9bd66478f7f194eb83dad180..145601cf7de9077c463a877a14fd023084d08caa 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 81657412604b77a3cd760a4b0e867efc8812dc93..f55e999e364a19f80f8ee5b36097814f9bc1e39a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTImageIOD::DRTImageIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -190,6 +192,7 @@ DRTImageIOD::DRTImageIOD()
     MultiplexedAudioChannelsDescriptionCodeSequence(),
     NumberOfFrames(DCM_NumberOfFrames),
     FrameIncrementPointer(DCM_FrameIncrementPointer),
+    StereoPairsPresent(DCM_StereoPairsPresent),
     DeviceSequence(),
     SamplesPerPixel(DCM_SamplesPerPixel),
     PhotometricInterpretation(DCM_PhotometricInterpretation),
@@ -276,6 +279,7 @@ DRTImageIOD::DRTImageIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence(),
     FrameExtractionSequence()
@@ -326,6 +330,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -458,6 +464,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     MultiplexedAudioChannelsDescriptionCodeSequence(copy.MultiplexedAudioChannelsDescriptionCodeSequence),
     NumberOfFrames(copy.NumberOfFrames),
     FrameIncrementPointer(copy.FrameIncrementPointer),
+    StereoPairsPresent(copy.StereoPairsPresent),
     DeviceSequence(copy.DeviceSequence),
     SamplesPerPixel(copy.SamplesPerPixel),
     PhotometricInterpretation(copy.PhotometricInterpretation),
@@ -544,6 +551,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence),
     FrameExtractionSequence(copy.FrameExtractionSequence)
@@ -600,6 +608,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -732,6 +742,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         MultiplexedAudioChannelsDescriptionCodeSequence = copy.MultiplexedAudioChannelsDescriptionCodeSequence;
         NumberOfFrames = copy.NumberOfFrames;
         FrameIncrementPointer = copy.FrameIncrementPointer;
+        StereoPairsPresent = copy.StereoPairsPresent;
         DeviceSequence = copy.DeviceSequence;
         SamplesPerPixel = copy.SamplesPerPixel;
         PhotometricInterpretation = copy.PhotometricInterpretation;
@@ -818,6 +829,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
         FrameExtractionSequence = copy.FrameExtractionSequence;
@@ -869,6 +881,8 @@ void DRTImageIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -1008,6 +1022,7 @@ void DRTImageIOD::clear()
     MultiplexedAudioChannelsDescriptionCodeSequence.clear();
     NumberOfFrames.clear();
     FrameIncrementPointer.clear();
+    StereoPairsPresent.clear();
     DeviceSequence.clear();
     PixelIntensityRelationship.clear();
     PixelIntensityRelationshipSign.clear();
@@ -1087,6 +1102,7 @@ void DRTImageIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
     FrameExtractionSequence.clear();
@@ -1249,6 +1265,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule");
+            getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule");
         }
 
         // --- DeviceModule (U) ---
@@ -1355,6 +1372,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1435,6 +1453,8 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1571,6 +1591,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1752,6 +1774,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule");
+            addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule");
         }
 
         // --- DeviceModule (U) ---
@@ -1864,6 +1887,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -2003,7 +2027,8 @@ OFBool DRTImageIOD::isMultiFrameModulePresent(const OFBool complete)
     } else {
         /* check whether at least one attribute is present */
         return !NumberOfFrames.isEmpty() ||
-               !FrameIncrementPointer.isEmpty();
+               !FrameIncrementPointer.isEmpty() ||
+               !StereoPairsPresent.isEmpty();
     }
 }
 
@@ -2304,6 +2329,12 @@ OFCondition DRTImageIOD::getCommentsOnThePerformedProcedureStep(OFString &value,
 }
 
 
+OFCondition DRTImageIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getContentDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentDate, value, pos);
@@ -3531,6 +3562,12 @@ OFCondition DRTImageIOD::getStationName(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTImageIOD::getStereoPairsPresent(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StereoPairsPresent, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getStopTrim(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StopTrim, value, pos);
@@ -4026,6 +4063,15 @@ OFCondition DRTImageIOD::setCommentsOnThePerformedProcedureStep(const OFString &
 }
 
 
+OFCondition DRTImageIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setContentDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -5361,6 +5407,15 @@ OFCondition DRTImageIOD::setStationName(const OFString &value, const OFBool chec
 }
 
 
+OFCondition DRTImageIOD::setStereoPairsPresent(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StereoPairsPresent.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setStopTrim(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
index 35e4b500561b4981a48c212b6cc7c99dd9d04a34..52b22af264d42b511f984b48ebfcb754ccf90520 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -171,6 +173,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -220,6 +223,8 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -333,6 +338,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -388,6 +394,8 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -501,6 +509,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -551,6 +560,8 @@ void DRTIonPlanIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -664,6 +675,7 @@ void DRTIonPlanIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -811,6 +823,7 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -885,6 +898,8 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1021,6 +1036,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1190,6 +1207,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1449,6 +1467,12 @@ OFCondition DRTIonPlanIOD::getCommentsOnThePerformedProcedureStep(OFString &valu
 }
 
 
+OFCondition DRTIonPlanIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -2214,6 +2238,15 @@ OFCondition DRTIonPlanIOD::setCommentsOnThePerformedProcedureStep(const OFString
 }
 
 
+OFCondition DRTIonPlanIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
index 6582499a8bd9cb8528b08afc7f2a1081e1ca8d42..ec5bf4d9058e8a912c24b2597c512cdf4f7b70c7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -166,6 +168,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -215,6 +218,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -323,6 +328,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -378,6 +384,8 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -486,6 +494,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -536,6 +545,8 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -644,6 +655,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -783,6 +795,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -857,6 +870,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -993,6 +1008,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1149,6 +1166,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1390,6 +1408,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getCommentsOnThePerformedProcedureSte
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -2122,6 +2146,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setCommentsOnThePerformedProcedureSte
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
index 5a633eecd93de7066c587d47ff717d99643b4190..25a3869d1eadb3f6cce6dd496385cf98907f9ad3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d5635e8d04e0fb073432f46d422c9a926f8506c5..e79d28cb3c55a0a8a7c85a19c4c624c811a7a862 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 20c90181ca01dc773a0d869449bdb3211a2ad997..eb40d2e48a789267bc77f5954a2b3f055ea56d4b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 99ae730ec4e4e9d98272ea2d46394d514e13d677..32d02c1ae92bd5a4c877fae545fc076aae16c805 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 1099097d71ca0a289653d2f88fd3bccf6b25d856..0501b4b9fe1104619dca8bd5f62c53638fb0129f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d24397058c9c29b60f2a04485d5dcb0d5f31e7ee..66ec2a8718297c2ecbd2786cac657810d3576760 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 5fb6743643b7a16bbdb9e278f46d056ea8664406..c6ee742f1bc40cf8a5c62295275acbc36237f4a1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b93c37351993c0dd2c55c175920b98bab2216e9e..77f8ba1e98e66990fc499569fc8854308d664db3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 9674978637794ae2cef1ced2155e3733e2ad38c7..6d236c56e0af61b81f5dc3b36ec4efb5a065e81f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2e8a283fa7ad53ba89e770d7976dcb4724fc30c2..ddbda9555ab4643b3aeac3e7a580a1ee9664c649 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0002733fba917c870854689204766930dc349022..369b0c6ee65cfb510103d2dda497a2eac09b2bd0 100644 (file)
@@ -1,13 +1,14 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *  Last modified on 2016-02-05 by Riesmeier
  *
  */
 
@@ -67,24 +68,26 @@ OFBool DRTModifiedAttributesSequence::Item::isValid() const
 }
 
 
-OFCondition DRTModifiedAttributesSequence::Item::read(DcmItem &item)
+OFCondition DRTModifiedAttributesSequence::Item::read(DcmItem & /*item*/)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
+        /* manual comment: nothing to do */
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTModifiedAttributesSequence::Item::write(DcmItem &item)
+OFCondition DRTModifiedAttributesSequence::Item::write(DcmItem & /*item*/)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
+        /* manual comment: nothing to do */
         result = EC_Normal;
     }
     return result;
index 88cf29e86fdae42c49a73a3ea47a3c99ecd9734a..bac8e3d66b7d28d5a9a4444d8e5c3131593d9b17 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8a964e190c538ca296fe579cced284ea722a3004..af627b045fbef0d1778f242f19973e7623921b91 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 4b8dafcce13f75b256f31ff7eca94376c47dad96..b48bfaa7e9bcde14c7f620f7cfa857280d89a69a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6d665c8dfa4929c067361c1d311c2daf396469ea..8879fa6dc9e035486abca792e57d5fa73b3ce5d3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3348a967d81f7577dba77cfa6f8fd767f4172ab4..b995faa89741c023319303d567ae8b9d38fdc9f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTMeasurementUnitsCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTMeasurementUnitsCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::Item::op
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTMeasurementUnitsCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTMeasurementUnitsCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "MeasurementUnitsCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "MeasurementUnitsCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "MeasurementUnitsCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "MeasurementUnitsCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "MeasurementUnitsCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "MeasurementUnitsCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::getContextUID(OFString &value
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResource(OFString &
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResource(const OFSt
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMeasurementUnitsCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTMeasurementUnitsCodeSequence::DRTMeasurementUnitsCodeSequence(const OFBool emptyDefaultSequence)
index e7ba74af636ac979ced84bf3bc78c25668028b54..0685b2ffe3a5478638612b79bc24a89f6c5a6f7a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 80fa9c3d490d241ad9c5d443ab04d9593f4b691c..43e4ce2f3f7d7de90f31f5c5072bd20f93ed8544 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTOperatorIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTOperatorIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::Item
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTOperatorIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTOperatorIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTOperatorIdentificationSequence::Item::read(DcmItem &item)
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "OperatorIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "OperatorIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "OperatorIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTOperatorIdentificationSequence::Item::write(DcmItem &item)
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "OperatorIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "OperatorIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "OperatorIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTOperatorIdentificationSequence::Item::getPersonAddress(OFString &
 }
 
 
+OFCondition DRTOperatorIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTOperatorIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTOperatorIdentificationSequence::Item::setPersonAddress(const OFSt
 }
 
 
+OFCondition DRTOperatorIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTOperatorIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index e7a963fb12e65e829c0a14b830d3841d277c5697..a47bd1ec1859ac9fe104a250e212feb7580eb1ef 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fcbb06c55bddd4f279191cf2b86b6c78e457c59a..81ccc2e006bd1c19a2b01ca394683bd6f1c42025 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 76de72880c151aa189a55ca430d52f752ee6ca4e..2f410328f53168edcd0431d47cfc9aa4d78ae893 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPatientBreedCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPatientBreedCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::Item::operator=(
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPatientBreedCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPatientBreedCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPatientBreedCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PatientBreedCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PatientBreedCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientBreedCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPatientBreedCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PatientBreedCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PatientBreedCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientBreedCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPatientBreedCodeSequence::Item::getContextUID(OFString &value, co
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPatientBreedCodeSequence::Item::getMappingResource(OFString &valu
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPatientBreedCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPatientBreedCodeSequence::Item::setContextUID(const OFString &val
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPatientBreedCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPatientBreedCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPatientBreedCodeSequence::DRTPatientBreedCodeSequence(const OFBool emptyDefaultSequence)
index 291ea9a7194edf9ce92a17600edc9911a0a30b04..d210544826ed544190da55d3fd9cfdb5814e5234 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTProcedureCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::Item::operator=(const
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTProcedureCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTProcedureCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTProcedureCodeSequence::Item::getContextUID(OFString &value, const
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTProcedureCodeSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTProcedureCodeSequence::Item::setContextUID(const OFString &value,
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTProcedureCodeSequence::Item::setMappingResource(const OFString &v
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTProcedureCodeSequence::DRTProcedureCodeSequence(const OFBool emptyDefaultSequence)
index 21c8b9ac9f3046cd19b50df2d1485f42c79f1fdf..b95cebda7adcf25359e65c3e4a950136b87578d5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtpdecs.cc b/dcmrt/libsrc/drtpdecs.cc
new file mode 100644 (file)
index 0000000..0238804
--- /dev/null
@@ -0,0 +1,630 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTPrivateDataElementCharacteristicsSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpdecs.h"
+
+
+// --- item class ---
+
+DRTPrivateDataElementCharacteristicsSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    BlockIdentifyingInformationStatus(DCM_BlockIdentifyingInformationStatus),
+    DeidentificationActionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    NonidentifyingPrivateElements(DCM_NonidentifyingPrivateElements),
+    PrivateCreatorReference(DCM_PrivateCreatorReference),
+    PrivateGroupReference(DCM_PrivateGroupReference)
+{
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    BlockIdentifyingInformationStatus(copy.BlockIdentifyingInformationStatus),
+    DeidentificationActionSequence(copy.DeidentificationActionSequence),
+    NonidentifyingPrivateElements(copy.NonidentifyingPrivateElements),
+    PrivateCreatorReference(copy.PrivateCreatorReference),
+    PrivateGroupReference(copy.PrivateGroupReference)
+{
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::Item::~Item()
+{
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        BlockIdentifyingInformationStatus = copy.BlockIdentifyingInformationStatus;
+        DeidentificationActionSequence = copy.DeidentificationActionSequence;
+        NonidentifyingPrivateElements = copy.NonidentifyingPrivateElements;
+        PrivateCreatorReference = copy.PrivateCreatorReference;
+        PrivateGroupReference = copy.PrivateGroupReference;
+    }
+    return *this;
+}
+
+
+void DRTPrivateDataElementCharacteristicsSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        PrivateGroupReference.clear();
+        PrivateCreatorReference.clear();
+        BlockIdentifyingInformationStatus.clear();
+        NonidentifyingPrivateElements.clear();
+        DeidentificationActionSequence.clear();
+    }
+}
+
+
+OFBool DRTPrivateDataElementCharacteristicsSequence::Item::isEmpty()
+{
+    return PrivateGroupReference.isEmpty() &&
+           PrivateCreatorReference.isEmpty() &&
+           BlockIdentifyingInformationStatus.isEmpty() &&
+           NonidentifyingPrivateElements.isEmpty() &&
+           DeidentificationActionSequence.isEmpty();
+}
+
+
+OFBool DRTPrivateDataElementCharacteristicsSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, PrivateGroupReference, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, PrivateCreatorReference, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, BlockIdentifyingInformationStatus, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, NonidentifyingPrivateElements, "1-n", "1C", "PrivateDataElementCharacteristicsSequence");
+        DeidentificationActionSequence.read(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(PrivateGroupReference), "1", "1", "PrivateDataElementCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmLongString(PrivateCreatorReference), "1", "1", "PrivateDataElementCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmCodeString(BlockIdentifyingInformationStatus), "1", "1", "PrivateDataElementCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(NonidentifyingPrivateElements), "1-n", "1C", "PrivateDataElementCharacteristicsSequence");
+        if (result.good()) result = DeidentificationActionSequence.write(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getBlockIdentifyingInformationStatus(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockIdentifyingInformationStatus, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getNonidentifyingPrivateElements(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, NonidentifyingPrivateElements).getUint16(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getPrivateCreatorReference(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PrivateCreatorReference, value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getPrivateGroupReference(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, PrivateGroupReference).getUint16(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setBlockIdentifyingInformationStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockIdentifyingInformationStatus.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setNonidentifyingPrivateElements(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return NonidentifyingPrivateElements.putUint16(value, pos);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setPrivateCreatorReference(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = PrivateCreatorReference.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setPrivateGroupReference(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return PrivateGroupReference.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTPrivateDataElementCharacteristicsSequence::DRTPrivateDataElementCharacteristicsSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::DRTPrivateDataElementCharacteristicsSequence(const DRTPrivateDataElementCharacteristicsSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence &DRTPrivateDataElementCharacteristicsSequence::operator=(const DRTPrivateDataElementCharacteristicsSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::~DRTPrivateDataElementCharacteristicsSequence()
+{
+    clear();
+}
+
+
+void DRTPrivateDataElementCharacteristicsSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTPrivateDataElementCharacteristicsSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTPrivateDataElementCharacteristicsSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTPrivateDataElementCharacteristicsSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::read(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_PrivateDataElementCharacteristicsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_PrivateDataElementCharacteristicsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTPrivateDataElementCharacteristicsSequence::write(DcmItem &dataset,
+                                                                const OFString &card,
+                                                                const OFString &type,
+                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrivateDataElementCharacteristicsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 122028071e7a0d6d4b6bb4f29cda14cb01fd60ca..0db5bd3dafa6e58730e0bab96e434c3e8360c4e4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c8640096d7e81ead0e3cf6530fd831a782c4fc3a..77b1ad8a3d5179fa8376e87a2fc738f2ce875569 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPersonIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPersonIdentificationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPersonIdentificationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPersonIdentificationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PersonIdentificationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PersonIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PersonIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PersonIdentificationCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PersonIdentificationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PersonIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PersonIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PersonIdentificationCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextUID(OFString &v
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFStri
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPersonIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextUID(const OFStr
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPersonIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPersonIdentificationCodeSequence::DRTPersonIdentificationCodeSequence(const OFBool emptyDefaultSequence)
index dd21288f0040fd9781024640c7072fe3105c69f9..63968f1dd7081732ac4a590e8f37ef0d2bdfe0e7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTPlanIOD::DRTPlanIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -176,6 +178,7 @@ DRTPlanIOD::DRTPlanIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -225,6 +228,8 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -343,6 +348,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -398,6 +404,8 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -516,6 +524,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -566,6 +575,8 @@ void DRTPlanIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -684,6 +695,7 @@ void DRTPlanIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -846,6 +858,7 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -920,6 +933,8 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1056,6 +1071,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1238,6 +1255,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1544,6 +1562,12 @@ OFCondition DRTPlanIOD::getCommentsOnThePerformedProcedureStep(OFString &value,
 }
 
 
+OFCondition DRTPlanIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -2327,6 +2351,15 @@ OFCondition DRTPlanIOD::setCommentsOnThePerformedProcedureStep(const OFString &v
 }
 
 
+OFCondition DRTPlanIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
index 0a5bff2a5b2d6667b456c7140470b55842702daa..7543d603d36efadeb4e4de5103f072839ef78e00 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPurposeOfReferenceCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPurposeOfReferenceCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPurposeOfReferenceCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPurposeOfReferenceCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PurposeOfReferenceCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PurposeOfReferenceCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PurposeOfReferenceCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PurposeOfReferenceCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::getContextUID(OFString &val
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::setContextUID(const OFStrin
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPurposeOfReferenceCodeSequence::DRTPurposeOfReferenceCodeSequence(const OFBool emptyDefaultSequence)
index b0bfc3104336fa087104abaea711f67efabf0414..baa1c80062da8a8ab9c884d118a2aa69411c25cb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const OFBool emptyDefaul
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentifi
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTPhysiciansOfRecordIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTPhysiciansOfRecordIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::read(DcmItem &ite
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "PhysiciansOfRecordIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::write(DcmItem &it
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "PhysiciansOfRecordIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonAddress(
 }
 
 
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonAddress(
 }
 
 
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index 98b049b70ab83d11c3611732a0bf4111c13c4b3a..9180bdd7d4d1b19a19c9c3662f137e5258af0456 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,8 +31,12 @@ DRTPerformedProtocolCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
-    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    MappingResourceUID(DCM_MappingResourceUID),
+    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -49,8 +53,12 @@ DRTPerformedProtocolCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
-    ProtocolContextSequence(copy.ProtocolContextSequence)
+    MappingResourceUID(copy.MappingResourceUID),
+    ProtocolContextSequence(copy.ProtocolContextSequence),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -75,8 +83,12 @@ DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
         ProtocolContextSequence = copy.ProtocolContextSequence;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTPerformedProtocolCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTPerformedProtocolCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PerformedProtocolCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PerformedProtocolCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PerformedProtocolCodeSequence");
@@ -157,13 +181,17 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PerformedProtocolCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PerformedProtocolCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PerformedProtocolCodeSequence");
@@ -264,6 +292,15 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPerformedProtocolCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPerformedProtocolCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPerformedProtocolCodeSequence::DRTPerformedProtocolCodeSequence(const OFBool emptyDefaultSequence)
index aa4ab44a25c1bacd5f2c5f98b20753c45da3b49f..bb30d25b81bfcd233e56566f9487b411454bcc05 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const OFBool emptyDe
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudy
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTPhysiciansReadingStudyIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTPhysiciansReadingStudyIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::read(DcmItem
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "PhysiciansReadingStudyIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::write(DcmItem
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "PhysiciansReadingStudyIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonAddr
 }
 
 
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonAddr
 }
 
 
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index a65b7eb1af623486d4510c9c1d0546436c010121..8ea54802e330e2e035308ae5fca6b8dc801daed3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPatientSpeciesCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPatientSpeciesCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::Item::operat
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPatientSpeciesCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPatientSpeciesCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PatientSpeciesCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PatientSpeciesCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientSpeciesCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PatientSpeciesCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PatientSpeciesCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientSpeciesCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::getContextUID(OFString &value,
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResource(OFString &va
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPatientSpeciesCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::setContextUID(const OFString &v
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResource(const OFStri
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPatientSpeciesCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPatientSpeciesCodeSequence::DRTPatientSpeciesCodeSequence(const OFBool emptyDefaultSequence)
index f34e8e3093a7e9f674207bea849e4cd09f6fa807..d35b732af718c817700e742a5980f8b883e4cef5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPatientSizeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPatientSizeCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::Item::operator=(co
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPatientSizeCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPatientSizeCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPatientSizeCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PatientSizeCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PatientSizeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientSizeCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPatientSizeCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PatientSizeCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PatientSizeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientSizeCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPatientSizeCodeSequence::Item::getContextUID(OFString &value, con
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPatientSizeCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPatientSizeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPatientSizeCodeSequence::Item::setContextUID(const OFString &valu
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPatientSizeCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPatientSizeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPatientSizeCodeSequence::DRTPatientSizeCodeSequence(const OFBool emptyDefaultSequence)
index 8dd4a3d0a92c0d6114497fc4c5ceec565d3caa14..d33128f2f61354b640d3ece7ed261897a6dd972d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d2d6eafe9d89996119812e51abe00af41046a851..e036f8202e0fbdecfdbee398ad058a1478b3f698 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 07a157cd7fa5c20668a618b335217a396f31b47d..11689b3f67ba320c3c789e2f4e92b023e91d9dfb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtqds.cc b/dcmrt/libsrc/drtqds.cc
new file mode 100644 (file)
index 0000000..2f35e33
--- /dev/null
@@ -0,0 +1,868 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTQuantityDefinitionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtqds.h"
+
+
+// --- item class ---
+
+DRTQuantityDefinitionSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ConceptCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ConceptNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    Date(DCM_Date),
+    DateTime(DCM_DateTime),
+    FloatingPointValue(DCM_FloatingPointValue),
+    MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    NumericValue(DCM_NumericValue),
+    PersonName(DCM_PersonName),
+    RationalDenominatorValue(DCM_RationalDenominatorValue),
+    RationalNumeratorValue(DCM_RationalNumeratorValue),
+    ReferencedSOPSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    TextValue(DCM_TextValue),
+    Time(DCM_Time),
+    UID(DCM_UID),
+    ValueType(DCM_ValueType)
+{
+}
+
+
+DRTQuantityDefinitionSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConceptCodeSequence(copy.ConceptCodeSequence),
+    ConceptNameCodeSequence(copy.ConceptNameCodeSequence),
+    Date(copy.Date),
+    DateTime(copy.DateTime),
+    FloatingPointValue(copy.FloatingPointValue),
+    MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
+    NumericValue(copy.NumericValue),
+    PersonName(copy.PersonName),
+    RationalDenominatorValue(copy.RationalDenominatorValue),
+    RationalNumeratorValue(copy.RationalNumeratorValue),
+    ReferencedSOPSequence(copy.ReferencedSOPSequence),
+    TextValue(copy.TextValue),
+    Time(copy.Time),
+    UID(copy.UID),
+    ValueType(copy.ValueType)
+{
+}
+
+
+DRTQuantityDefinitionSequence::Item::~Item()
+{
+}
+
+
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConceptCodeSequence = copy.ConceptCodeSequence;
+        ConceptNameCodeSequence = copy.ConceptNameCodeSequence;
+        Date = copy.Date;
+        DateTime = copy.DateTime;
+        FloatingPointValue = copy.FloatingPointValue;
+        MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
+        NumericValue = copy.NumericValue;
+        PersonName = copy.PersonName;
+        RationalDenominatorValue = copy.RationalDenominatorValue;
+        RationalNumeratorValue = copy.RationalNumeratorValue;
+        ReferencedSOPSequence = copy.ReferencedSOPSequence;
+        TextValue = copy.TextValue;
+        Time = copy.Time;
+        UID = copy.UID;
+        ValueType = copy.ValueType;
+    }
+    return *this;
+}
+
+
+void DRTQuantityDefinitionSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ValueType.clear();
+        ConceptNameCodeSequence.clear();
+        DateTime.clear();
+        Date.clear();
+        Time.clear();
+        PersonName.clear();
+        UID.clear();
+        TextValue.clear();
+        ConceptCodeSequence.clear();
+        NumericValue.clear();
+        FloatingPointValue.clear();
+        RationalNumeratorValue.clear();
+        RationalDenominatorValue.clear();
+        MeasurementUnitsCodeSequence.clear();
+        ReferencedSOPSequence.clear();
+    }
+}
+
+
+OFBool DRTQuantityDefinitionSequence::Item::isEmpty()
+{
+    return ValueType.isEmpty() &&
+           ConceptNameCodeSequence.isEmpty() &&
+           DateTime.isEmpty() &&
+           Date.isEmpty() &&
+           Time.isEmpty() &&
+           PersonName.isEmpty() &&
+           UID.isEmpty() &&
+           TextValue.isEmpty() &&
+           ConceptCodeSequence.isEmpty() &&
+           NumericValue.isEmpty() &&
+           FloatingPointValue.isEmpty() &&
+           RationalNumeratorValue.isEmpty() &&
+           RationalDenominatorValue.isEmpty() &&
+           MeasurementUnitsCodeSequence.isEmpty() &&
+           ReferencedSOPSequence.isEmpty();
+}
+
+
+OFBool DRTQuantityDefinitionSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ValueType, "1", "1", "QuantityDefinitionSequence");
+        ConceptNameCodeSequence.read(item, "1-n", "1", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, DateTime, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, Date, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, Time, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, PersonName, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, UID, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, TextValue, "1", "1C", "QuantityDefinitionSequence");
+        ConceptCodeSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, NumericValue, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, FloatingPointValue, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, RationalNumeratorValue, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "QuantityDefinitionSequence");
+        MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
+        ReferencedSOPSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "QuantityDefinitionSequence");
+        if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmTime(Time), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmPersonName(PersonName), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(UID), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedText(TextValue), "1", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = ConceptCodeSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDecimalString(NumericValue), "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(FloatingPointValue), "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmSignedLong(RationalNumeratorValue), "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getDate(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Date, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DateTime, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getFloatingPointValue(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, FloatingPointValue).getFloat64(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getNumericValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumericValue, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getNumericValue(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, NumericValue).getFloat64(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getNumericValue(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, NumericValue).getFloat64Vector(value);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getPersonName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonName, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getRationalDenominatorValue(Uint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedLong &, RationalDenominatorValue).getUint32(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getRationalNumeratorValue(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmSignedLong &, RationalNumeratorValue).getSint32(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getTextValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TextValue, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Time, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(UID, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::getValueType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ValueType, value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Date.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setFloatingPointValue(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return FloatingPointValue.putFloat64(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setNumericValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = NumericValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setPersonName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = PersonName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setRationalDenominatorValue(const Uint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RationalDenominatorValue.putUint32(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setRationalNumeratorValue(const Sint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RationalNumeratorValue.putSint32(value, pos);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setTextValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = TextValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Time.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = UID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::Item::setValueType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ValueType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTQuantityDefinitionSequence::DRTQuantityDefinitionSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTQuantityDefinitionSequence::DRTQuantityDefinitionSequence(const DRTQuantityDefinitionSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTQuantityDefinitionSequence &DRTQuantityDefinitionSequence::operator=(const DRTQuantityDefinitionSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTQuantityDefinitionSequence::~DRTQuantityDefinitionSequence()
+{
+    clear();
+}
+
+
+void DRTQuantityDefinitionSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTQuantityDefinitionSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTQuantityDefinitionSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTQuantityDefinitionSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::read(DcmItem &dataset,
+                                                const OFString &card,
+                                                const OFString &type,
+                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_QuantityDefinitionSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_QuantityDefinitionSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTQuantityDefinitionSequence::write(DcmItem &dataset,
+                                                 const OFString &card,
+                                                 const OFString &type,
+                                                 const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_QuantityDefinitionSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 22fbf617b28e56a2af6d5e11c4748403526ac111..5f9a1e70181014961e2480b821bd4b2777d2c70f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 368a00954a29ed3db16fb7d5cca37b5f124fb451..361f0c570efde4eb6a8b93d64177fbe402811ffd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 74fd8cc8077b384b511bfa6e143b5d8da831854d..58051ea31e1ea97b0f8dd1b7b0d25e19220ee550 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c6a8371f77436ce7b4296376d7d2a4df541dfd7b..53254281b05c3c4a9fb63275cb4155e931e946f9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 24d8834bd47ab526ce78a9e2bf76bc4283f28509..aae8b6ad395ddd634b7d03bf07362a84224bcfe5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 462e6bbba0e8a38e47cd9c99a02df7e0d008b516..306e642ea8defab4a8c97bd4046e4f3faf9e5f22 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index eaa746ce010756b91f119270eb406574cd8a5177..3b04a4c0bb74ef1130bf32e8789db9c17c59886a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 0574c66d6e33769627907aa63b125c0adaba30b9..67a0c564884ab2c736555768532a8b20d1ba5f23 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 92f91b0a6d66652d65fca42d687a379af0edfb37..54bc29eee85e9d84dc322ff9c261c13cfad82b1c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dfd4a6f447d5c8e34332a2f407266b3c64d35eac..e2b26616ff74e7aad878f38765c61e8eb2ca9cc4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 569d55ad937105ceb56086a24b1ee08cf505cab1..acad21e3c9bd4de332a676a173a2da2fb88a1d60 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 6e95d0ac873fccb30b4075e6fc1e11dbf80c6f97..0b3b03b04a9571511029986238b08dba132839ac 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bbd04680e625de19232d8a729b44827dbc4a336d..c115babb26fe3b588fb5e33a405da2aef7df025a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 294c357ed988c1dbfbd2168fc19f404bbc806727..b64abf7e0c64b6e3f8cadb8a9020c5d43b95dc7b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -23,6 +23,8 @@ DRTROIContourSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     ContourSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ROIDisplayColor(DCM_ROIDisplayColor),
+    RecommendedDisplayCIELabValue(DCM_RecommendedDisplayCIELabValue),
+    RecommendedDisplayGrayscaleValue(DCM_RecommendedDisplayGrayscaleValue),
     ReferencedROINumber(DCM_ReferencedROINumber)
 {
 }
@@ -32,6 +34,8 @@ DRTROIContourSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     ContourSequence(copy.ContourSequence),
     ROIDisplayColor(copy.ROIDisplayColor),
+    RecommendedDisplayCIELabValue(copy.RecommendedDisplayCIELabValue),
+    RecommendedDisplayGrayscaleValue(copy.RecommendedDisplayGrayscaleValue),
     ReferencedROINumber(copy.ReferencedROINumber)
 {
 }
@@ -49,6 +53,8 @@ DRTROIContourSequence::Item &DRTROIContourSequence::Item::operator=(const Item &
         EmptyDefaultItem = copy.EmptyDefaultItem;
         ContourSequence = copy.ContourSequence;
         ROIDisplayColor = copy.ROIDisplayColor;
+        RecommendedDisplayCIELabValue = copy.RecommendedDisplayCIELabValue;
+        RecommendedDisplayGrayscaleValue = copy.RecommendedDisplayGrayscaleValue;
         ReferencedROINumber = copy.ReferencedROINumber;
     }
     return *this;
@@ -62,6 +68,8 @@ void DRTROIContourSequence::Item::clear()
         /* clear all DICOM attributes */
         ReferencedROINumber.clear();
         ROIDisplayColor.clear();
+        RecommendedDisplayGrayscaleValue.clear();
+        RecommendedDisplayCIELabValue.clear();
         ContourSequence.clear();
     }
 }
@@ -71,6 +79,8 @@ OFBool DRTROIContourSequence::Item::isEmpty()
 {
     return ReferencedROINumber.isEmpty() &&
            ROIDisplayColor.isEmpty() &&
+           RecommendedDisplayGrayscaleValue.isEmpty() &&
+           RecommendedDisplayCIELabValue.isEmpty() &&
            ContourSequence.isEmpty();
 }
 
@@ -90,6 +100,8 @@ OFCondition DRTROIContourSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ROIContourSequence");
         getAndCheckElementFromDataset(item, ROIDisplayColor, "3", "3", "ROIContourSequence");
+        getAndCheckElementFromDataset(item, RecommendedDisplayGrayscaleValue, "1", "3", "ROIContourSequence");
+        getAndCheckElementFromDataset(item, RecommendedDisplayCIELabValue, "3", "3", "ROIContourSequence");
         ContourSequence.read(item, "1-n", "3", "ROIContourSequence");
         result = EC_Normal;
     }
@@ -105,6 +117,8 @@ OFCondition DRTROIContourSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ROIContourSequence");
         addElementToDataset(result, item, new DcmIntegerString(ROIDisplayColor), "3", "3", "ROIContourSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayGrayscaleValue), "1", "3", "ROIContourSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayCIELabValue), "3", "3", "ROIContourSequence");
         if (result.good()) result = ContourSequence.write(item, "1-n", "3", "ROIContourSequence");
     }
     return result;
@@ -129,6 +143,24 @@ OFCondition DRTROIContourSequence::Item::getROIDisplayColor(Sint32 &value, const
 }
 
 
+OFCondition DRTROIContourSequence::Item::getRecommendedDisplayCIELabValue(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, RecommendedDisplayCIELabValue).getUint16(value, pos);
+}
+
+
+OFCondition DRTROIContourSequence::Item::getRecommendedDisplayGrayscaleValue(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, RecommendedDisplayGrayscaleValue).getUint16(value, pos);
+}
+
+
 OFCondition DRTROIContourSequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -160,6 +192,24 @@ OFCondition DRTROIContourSequence::Item::setROIDisplayColor(const OFString &valu
 }
 
 
+OFCondition DRTROIContourSequence::Item::setRecommendedDisplayCIELabValue(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RecommendedDisplayCIELabValue.putUint16(value, pos);
+}
+
+
+OFCondition DRTROIContourSequence::Item::setRecommendedDisplayGrayscaleValue(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RecommendedDisplayGrayscaleValue.putUint16(value, pos);
+}
+
+
 OFCondition DRTROIContourSequence::Item::setReferencedROINumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index 9c3e30af910612e8c455e9ae918d844aafa16541..d2f0e91fc5dabdc54ca1c6b79f8e41408052a637 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTDoseROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a5c35fecf283573cdf5fd051c31b6b7163342a77..4cd20b70a849b82257ee3004717f8398c1c2a548 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bc583f24e3d5ef2c455e9743753b725cdd059ceb..00610038830250b56615a5fb12e4afb43ff865ef 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b6e9d3980eaffc25d992e54832ba5a91f0b91209..0dadddd9fd5253db0b49ca95249d10c5435aad54 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bc8e592c05de84d5a4b817e7167e36ba381b2976..9db4526f02c54f1933154fc2e0780b2994f74d41 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c06bc61b28a4c46ad55e0f49e802115956858e71..ec67009ab5143e37a2f3ce523c28e229df10310c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 93d97337fab22d2fa4c386d233dd2e97120178d9..e82a2865b8e7fef6f8a9419f7caf1a14599f333d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f9a63ff8cca4cc95eb7554932d50d3fba651db01..a8b33d04084adf2f03f334cbf59938c6030f1e94 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index af73b44c956a01184c9d56b01de9dfe807bfe57b..8b21d1143a2a014e4822290806ae2af1d244fc7f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::It
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTRTROIIdentificationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTRTROIIdentificationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "RTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RTROIIdentificationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RTROIIdentificationCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "RTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RTROIIdentificationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RTROIIdentificationCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::getContextUID(OFString &va
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResource(OFStrin
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::setContextUID(const OFStri
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResource(const O
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTROIIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTRTROIIdentificationCodeSequence::DRTRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence)
index 034cfa8e564171ce9cc74fd5a18802d2bc0792f1..27c692698201c4f3ca95f23f77344e8501f1d431 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2df57329b3df938b519ba22b251914834a3eb2a3..4628e26352e900b0abc48059c488418b7e8508cd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 91cdd43b0054e89a75383a93a15e213b2568b351..41c2ead7c1d3028de8eef154f00950a7eaf9025c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2e450c5a22522638d5208f2579e97e2d1dc5570e..f1548d242ed4dcd476b909cf0a9acdc33c7aefcf 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index d28c498a12277919ccf0795b78e6525acdfc4de0..e13e9d3572e2f5162df816c8daa7e0dd5e140213 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7c73f6d1543765587d2c689b4a207073fcfce5fe..d1710aeea20bdbc55b3b3ded9af079479f702b5e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 54c381648bfb2da8e3504617d7d050280e2052a1..125b195efe4afcd4b0c6f99986c1f408f84e4ac3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 4b648d6f79161851c43a12e77563a1367473269a..093a758af7caf8da9e5f2036e60b2fb90fb0c8d4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTRequestedProcedureCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTRequestedProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTRequestedProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTRequestedProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "RequestedProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RequestedProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RequestedProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "RequestedProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RequestedProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RequestedProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::getContextUID(OFString &val
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRequestedProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::setContextUID(const OFStrin
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRequestedProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTRequestedProcedureCodeSequence::DRTRequestedProcedureCodeSequence(const OFBool emptyDefaultSequence)
index 299d60f23da7d70fa09602a28670757ad26c6a1f..0fd7a5d4f55652dcb0df1377115dfa747cef9407 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaul
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTReferringPhysicianIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTReferringPhysicianIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::read(DcmItem &ite
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "ReferringPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::write(DcmItem &it
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "ReferringPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonAddress(
 }
 
 
+OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonAddress(
 }
 
 
+OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index ef055d7bab2f1dbfd53e1ea09b219ecb2604f5de..53cd0a23e6730803e71b28dd54cc76d23c090616 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTReasonForPerformedProcedureCodeSequence::Item::Item(const OFBool emptyDefault
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTReasonForPerformedProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedure
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTReasonForPerformedProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTReasonForPerformedProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::read(DcmItem &item
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ReasonForPerformedProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::write(DcmItem &ite
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ReasonForPerformedProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getContextUID(OFSt
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setContextUID(cons
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTReasonForPerformedProcedureCodeSequence::DRTReasonForPerformedProcedureCodeSequence(const OFBool emptyDefaultSequence)
index ecfcf8be9b4d2365be7cfc82e2f00cb53b40da40..0a8910b90c1db637b28bee36c6f7d72c639fc74b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -27,6 +27,7 @@ DRTReferencedPatientPhotoSequence::Item::Item(const OFBool emptyDefaultItem)
     SeriesInstanceUID(DCM_SeriesInstanceUID),
     StudyInstanceUID(DCM_StudyInstanceUID),
     TypeOfInstances(DCM_TypeOfInstances),
+    WADORSRetrievalSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     WADORetrievalSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     XDSRetrievalSequence(emptyDefaultItem /*emptyDefaultSequence*/)
 {
@@ -41,6 +42,7 @@ DRTReferencedPatientPhotoSequence::Item::Item(const Item &copy)
     SeriesInstanceUID(copy.SeriesInstanceUID),
     StudyInstanceUID(copy.StudyInstanceUID),
     TypeOfInstances(copy.TypeOfInstances),
+    WADORSRetrievalSequence(copy.WADORSRetrievalSequence),
     WADORetrievalSequence(copy.WADORetrievalSequence),
     XDSRetrievalSequence(copy.XDSRetrievalSequence)
 {
@@ -63,6 +65,7 @@ DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::Item
         SeriesInstanceUID = copy.SeriesInstanceUID;
         StudyInstanceUID = copy.StudyInstanceUID;
         TypeOfInstances = copy.TypeOfInstances;
+        WADORSRetrievalSequence = copy.WADORSRetrievalSequence;
         WADORetrievalSequence = copy.WADORetrievalSequence;
         XDSRetrievalSequence = copy.XDSRetrievalSequence;
     }
@@ -83,6 +86,7 @@ void DRTReferencedPatientPhotoSequence::Item::clear()
         DICOMMediaRetrievalSequence.clear();
         WADORetrievalSequence.clear();
         XDSRetrievalSequence.clear();
+        WADORSRetrievalSequence.clear();
     }
 }
 
@@ -96,7 +100,8 @@ OFBool DRTReferencedPatientPhotoSequence::Item::isEmpty()
            DICOMRetrievalSequence.isEmpty() &&
            DICOMMediaRetrievalSequence.isEmpty() &&
            WADORetrievalSequence.isEmpty() &&
-           XDSRetrievalSequence.isEmpty();
+           XDSRetrievalSequence.isEmpty() &&
+           WADORSRetrievalSequence.isEmpty();
 }
 
 
@@ -121,6 +126,7 @@ OFCondition DRTReferencedPatientPhotoSequence::Item::read(DcmItem &item)
         DICOMMediaRetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         WADORetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         XDSRetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
+        WADORSRetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         result = EC_Normal;
     }
     return result;
@@ -141,6 +147,7 @@ OFCondition DRTReferencedPatientPhotoSequence::Item::write(DcmItem &item)
         if (result.good()) result = DICOMMediaRetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         if (result.good()) result = WADORetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         if (result.good()) result = XDSRetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
+        if (result.good()) result = WADORSRetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
     }
     return result;
 }
index 8f22b470c82488c422915f8d3c608ff267693c40..6eb0ef4d4dbbbc842e7830e163590659fa043f24 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 96a123df61b3f607e49c1872b80e7524edc99810..14f074405a4e4dc83a45f068efb37fc6ffee5d60 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index aa32c59a48023fa651a71765ee0a689c485874a0..03e800ef1c41747bc167a59ab82e4c531e31b74d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 91707a469ec310ac0e2fe9a904707dea84061e07..0feb95854a13627ca3a8c76e8c7eeb1762f4af5f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 042b206245b89f196a178aaa11561c984cffce1e..d583bd4ee4b3ed3c250d26f463bdbff268e4d3a8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dd849534e80ba29b5568376d598eefdeb7bee1a5..3f51ce5dc2c8b219af3c5724569f1be243d7460d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 661b6cd6bde600963080f48be8ca05199de5daf8..1938aae7a7da250b2fa9cc6adea5797ed4b34d53 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c0e56ac5067d0021d969c0cbc090b109a8667de8..5d8ad67f9a180e74bc3038bc4f321087c5a7242e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 56fbe7be92491507fbbf763dbb274a07e135a507..8847f97270cc4f76fefbf15edb4f85b8ce41a4bd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTReasonForRequestedProcedureCodeSequence::Item::Item(const OFBool emptyDefault
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTReasonForRequestedProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedure
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTReasonForRequestedProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTReasonForRequestedProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::read(DcmItem &item
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ReasonForRequestedProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::write(DcmItem &ite
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ReasonForRequestedProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getContextUID(OFSt
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setContextUID(cons
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTReasonForRequestedProcedureCodeSequence::DRTReasonForRequestedProcedureCodeSequence(const OFBool emptyDefaultSequence)
index ddb1fb5608c2633b147e79c60fff742fcb612881..e11fe871c1f69b9292931c40665da88e9ce0b29e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3ab8b9ad4a61cae479ed76365810f5482965134c..d149cb829c06cec20374d9757028cf9929589d1b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 4076caea0d88b6f6e2d4a15824e4d1f0a7df6ac5..b2988b09060b9b4926c3e01899b49d14a3e95a5c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a32e03e181df7a4ac68ac050c7bbbaf1151dbd72..2e16c556120ba3521c874d6a149e682cb82ceadb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 7ece4a5133f0f8311a4512abe4c92c9bd169bdad..3f084b004b3e7b42ae088c834151f2bf2c1ca887 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f5883bd382ac3f4f788fadd62236fed26a1df7bc..008b6c43eadb57dea9c3105deaf7d4edc77b524f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bb07fee4e1183425b40bbee446c43f2c4b390d84..830ede14b13ae06658407d8bad9d6a034fa12dbb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index f06ff72a90bb3ffde53c6254aad5ca26990868e1..c31e213d7b1b613c869e59fe9b4c805863cbda3e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTRequestingServiceCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTRequestingServiceCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTRequestingServiceCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTRequestingServiceCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTRequestingServiceCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "RequestingServiceCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RequestingServiceCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RequestingServiceCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTRequestingServiceCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "RequestingServiceCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RequestingServiceCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RequestingServiceCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTRequestingServiceCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRequestingServiceCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTRequestingServiceCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRequestingServiceCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTRequestingServiceCodeSequence::DRTRequestingServiceCodeSequence(const OFBool emptyDefaultSequence)
index 04e7974696f7ca2ff6ee7aca04eea598a811d1b4..fa949ae887efe5640d535afc22adf346c3427c03 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b6d93caf30b3252bd769bf4c51a18701b35a71e4..c373227d53057c0b127d788ea6949a3dc298f4c4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 87bfaded0c34a39aae516a7e9a9712b570724edc..42d12bafe67dd4788a4575e5fb4b5e9e4834099a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index e1a99f608ef7705423e32ad969bc55528cc38653..cfc26d58cb9824dccf646682994ccf46e8487f38 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dde02ddb174debbe5c76a57ab92f0c1ad6908988..8f63f7805f538016e57f0fc238907d26ce83f4ca 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2b1aad009026796d9d2fbc51b017f52d2ceeed5a..302f371364b2917f7740b4f5f2d09c93b5a906f6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2deaf001ed88be3d7dbbb92bb83545153c815c8e..bbe4571c1781151b286c894da7d6756c288ac153 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 376f84b9242b3ffa348d74c3203f990a8b52f1be..857ed829619e05b10cb221d74ac677e1dd5e2d4d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 02c3798060451c88e3f015aaa83030b1fc3e8b60..a36e5c1a1d8d6fd84ae0ae9c4697c2369d77d7bc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 26d981e2e6f223d545d3b9389d8c9732bfd213ab..0f4da67d169feaa9fba03c12df1cabe0ffff29b2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2c6d837323174cbf87ab500707573bd2759cefdc..3165635b53af58a78675b48cc9e5d8888094c745 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index bd3ddd90ca028ebf46335e607eae654f9cc3680b..90ab23cc20f90e40ccc8d6beca7eee544536a48d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 92196dc855fdf65e0d8a94b01d6dc22133ca27d5..f8824e26870533529657ad031d6f4a175769c764 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 4b38bc76dd74d07fab739a87dabdfe9c4cd29e63..b14e8298ffdee814c2a27a1cd22e68af2d18e756 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 3de875b40c88177db620cb41bc81f27b23143403..7934196986d2eeddd384302e0d8bef97ec3c299c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 135c4a8292e0b67466fb3ed1252def6343beed27..c79453424cf40df8ffa10664b40e1e596c6353ca 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 121e7ad9f852bc4d79c1d8a3883056b86fbd0a01..9f709552ec17068a327de8aee12d68f8ad7fe82f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -24,6 +24,7 @@ DRTRealWorldValueMappingSequence::Item::Item(const OFBool emptyDefaultItem)
     LUTExplanation(DCM_LUTExplanation),
     LUTLabel(DCM_LUTLabel),
     MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    QuantityDefinitionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     RealWorldValueFirstValueMapped(DCM_RealWorldValueFirstValueMapped),
     RealWorldValueIntercept(DCM_RealWorldValueIntercept),
     RealWorldValueLUTData(DCM_RealWorldValueLUTData),
@@ -38,6 +39,7 @@ DRTRealWorldValueMappingSequence::Item::Item(const Item &copy)
     LUTExplanation(copy.LUTExplanation),
     LUTLabel(copy.LUTLabel),
     MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
+    QuantityDefinitionSequence(copy.QuantityDefinitionSequence),
     RealWorldValueFirstValueMapped(copy.RealWorldValueFirstValueMapped),
     RealWorldValueIntercept(copy.RealWorldValueIntercept),
     RealWorldValueLUTData(copy.RealWorldValueLUTData),
@@ -60,6 +62,7 @@ DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::Item::
         LUTExplanation = copy.LUTExplanation;
         LUTLabel = copy.LUTLabel;
         MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
+        QuantityDefinitionSequence = copy.QuantityDefinitionSequence;
         RealWorldValueFirstValueMapped = copy.RealWorldValueFirstValueMapped;
         RealWorldValueIntercept = copy.RealWorldValueIntercept;
         RealWorldValueLUTData = copy.RealWorldValueLUTData;
@@ -83,6 +86,7 @@ void DRTRealWorldValueMappingSequence::Item::clear()
         LUTExplanation.clear();
         LUTLabel.clear();
         MeasurementUnitsCodeSequence.clear();
+        QuantityDefinitionSequence.clear();
     }
 }
 
@@ -96,7 +100,8 @@ OFBool DRTRealWorldValueMappingSequence::Item::isEmpty()
            RealWorldValueLUTData.isEmpty() &&
            LUTExplanation.isEmpty() &&
            LUTLabel.isEmpty() &&
-           MeasurementUnitsCodeSequence.isEmpty();
+           MeasurementUnitsCodeSequence.isEmpty() &&
+           QuantityDefinitionSequence.isEmpty();
 }
 
 
@@ -121,6 +126,7 @@ OFCondition DRTRealWorldValueMappingSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, LUTExplanation, "1", "1", "RealWorldValueMappingSequence");
         getAndCheckElementFromDataset(item, LUTLabel, "1", "1", "RealWorldValueMappingSequence");
         MeasurementUnitsCodeSequence.read(item, "1-n", "1", "RealWorldValueMappingSequence");
+        QuantityDefinitionSequence.read(item, "1-n", "3", "RealWorldValueMappingSequence");
         result = EC_Normal;
     }
     return result;
@@ -141,6 +147,7 @@ OFCondition DRTRealWorldValueMappingSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(LUTExplanation), "1", "1", "RealWorldValueMappingSequence");
         addElementToDataset(result, item, new DcmShortString(LUTLabel), "1", "1", "RealWorldValueMappingSequence");
         if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1", "RealWorldValueMappingSequence");
+        if (result.good()) result = QuantityDefinitionSequence.write(item, "1-n", "3", "RealWorldValueMappingSequence");
     }
     return result;
 }
index 619b2be30456fb9a6e74f1dfefe51406119d0281..78a10f0e075a85f33ce34f6761f654d719b4421b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dea6ceebdaa04e3ad01c7efff9c906eb1701f5e0..5dd75d956ec09060c42e4ed5dbeec4f2964dba88 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTSeriesDescriptionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTSeriesDescriptionCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTSeriesDescriptionCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTSeriesDescriptionCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "SeriesDescriptionCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "SeriesDescriptionCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SeriesDescriptionCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "SeriesDescriptionCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "SeriesDescriptionCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SeriesDescriptionCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSeriesDescriptionCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTSeriesDescriptionCodeSequence::DRTSeriesDescriptionCodeSequence(const OFBool emptyDefaultSequence)
index 0a9f12e2ff9e21f031fd15ea2b1807a88468d6b3..946e59367a78b815069d9f6c36cbb488f2adb344 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index a26369a51c49fcbcc9a42c4efb854fe9e6620d10..844fc9585d4762b2dc6e33c45069efba01bd9e1d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index df008de8a4ef1ecb43392d65f3a3d83f775c96a3..85b953c9d1436e200d14b6e557fa97147bf75bc4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index fa5c0a0383781c561de39cfe52e6066edaa90195..b0febd2b1781c9000c52cc0826c6a1795edcdddd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 59bc852afa66c8649907cd30082a050e68297592..be55f83c51fa225923355eeeaaccdce74f63024f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTSegmentedPropertyCategoryCodeSequence::Item::Item(const OFBool emptyDefaultIt
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTSegmentedPropertyCategoryCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCode
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTSegmentedPropertyCategoryCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTSegmentedPropertyCategoryCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "SegmentedPropertyCategoryCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "SegmentedPropertyCategoryCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getContextUID(OFStri
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResource(O
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setContextUID(const
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResource(c
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTSegmentedPropertyCategoryCodeSequence::DRTSegmentedPropertyCategoryCodeSequence(const OFBool emptyDefaultSequence)
index 6df3b1ac517a8ec1b209de2157ffdfaea805ac2a..7f47f65e765b164bfaf207083e08c35f7f29f4de 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,8 +31,12 @@ DRTScheduledProtocolCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
-    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    MappingResourceUID(DCM_MappingResourceUID),
+    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -49,8 +53,12 @@ DRTScheduledProtocolCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
-    ProtocolContextSequence(copy.ProtocolContextSequence)
+    MappingResourceUID(copy.MappingResourceUID),
+    ProtocolContextSequence(copy.ProtocolContextSequence),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -75,8 +83,12 @@ DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
         ProtocolContextSequence = copy.ProtocolContextSequence;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTScheduledProtocolCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTScheduledProtocolCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ScheduledProtocolCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ScheduledProtocolCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ScheduledProtocolCodeSequence");
@@ -157,13 +181,17 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ScheduledProtocolCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ScheduledProtocolCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ScheduledProtocolCodeSequence");
@@ -264,6 +292,15 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTScheduledProtocolCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTScheduledProtocolCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTScheduledProtocolCodeSequence::DRTScheduledProtocolCodeSequence(const OFBool emptyDefaultSequence)
index 88d80c641f7b93e5243f758fbb2aadffd4cd70cf..0bfbd0c6895bf9d85330ebd543bbd667b80c0261 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 96af4c6bd8e00622793c7cb0522dfaed498232d9..bf467a71ea612ce53c43cf582a65cde413850c7b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index c4c4cd6742c7cfdddef5e83b434cff9c3ef22bac..29308f057826e45f5142e6196c8b8b866fa188a3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -121,6 +123,8 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
     PixelPaddingValue(DCM_PixelPaddingValue),
+    FrameOfReferenceUID(DCM_FrameOfReferenceUID),
+    PositionReferenceIndicator(DCM_PositionReferenceIndicator),
     StructureSetLabel(DCM_StructureSetLabel),
     StructureSetName(DCM_StructureSetName),
     StructureSetDescription(DCM_StructureSetDescription),
@@ -161,6 +165,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -210,6 +215,8 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -273,6 +280,8 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
     PixelPaddingValue(copy.PixelPaddingValue),
+    FrameOfReferenceUID(copy.FrameOfReferenceUID),
+    PositionReferenceIndicator(copy.PositionReferenceIndicator),
     StructureSetLabel(copy.StructureSetLabel),
     StructureSetName(copy.StructureSetName),
     StructureSetDescription(copy.StructureSetDescription),
@@ -313,6 +322,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -368,6 +378,8 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -431,6 +443,8 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
         PixelPaddingValue = copy.PixelPaddingValue;
+        FrameOfReferenceUID = copy.FrameOfReferenceUID;
+        PositionReferenceIndicator = copy.PositionReferenceIndicator;
         StructureSetLabel = copy.StructureSetLabel;
         StructureSetName = copy.StructureSetName;
         StructureSetDescription = copy.StructureSetDescription;
@@ -471,6 +485,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -521,6 +536,8 @@ void DRTStructureSetIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -584,6 +601,8 @@ void DRTStructureSetIOD::clear()
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
     PixelPaddingValue.clear();
+    FrameOfReferenceUID.clear();
+    PositionReferenceIndicator.clear();
     StructureSetLabel.clear();
     StructureSetName.clear();
     StructureSetDescription.clear();
@@ -624,6 +643,7 @@ void DRTStructureSetIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -688,6 +708,14 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, PixelPaddingValue, "1", "1C", "GeneralEquipmentModule");
 
+        // --- FrameOfReferenceModule (U) ---
+        if (dataset.tagExists(DCM_FrameOfReferenceUID) ||
+            dataset.tagExists(DCM_PositionReferenceIndicator))
+        {
+            getAndCheckElementFromDataset(dataset, FrameOfReferenceUID, "1", "1", "FrameOfReferenceModule");
+            getAndCheckElementFromDataset(dataset, PositionReferenceIndicator, "1", "2", "FrameOfReferenceModule");
+        }
+
         // --- StructureSetModule (M) ---
         getAndCheckElementFromDataset(dataset, StructureSetLabel, "1", "1", "StructureSetModule");
         getAndCheckElementFromDataset(dataset, StructureSetName, "1", "3", "StructureSetModule");
@@ -741,6 +769,7 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -815,6 +844,8 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -951,6 +982,8 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1034,6 +1067,13 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingValue), "1", "1C", "GeneralEquipmentModule");
 
+        // --- FrameOfReferenceModule (U) ---
+        if (isFrameOfReferenceModulePresent(OFFalse /*complete*/))
+        {
+            addElementToDataset(result, dataset, new DcmUniqueIdentifier(FrameOfReferenceUID), "1", "1", "FrameOfReferenceModule");
+            addElementToDataset(result, dataset, new DcmLongString(PositionReferenceIndicator), "1", "2", "FrameOfReferenceModule");
+        }
+
         // --- StructureSetModule (M) ---
         addElementToDataset(result, dataset, new DcmShortString(StructureSetLabel), "1", "1", "StructureSetModule");
         addElementToDataset(result, dataset, new DcmLongString(StructureSetName), "1", "3", "StructureSetModule");
@@ -1087,6 +1127,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1160,6 +1201,20 @@ OFBool DRTStructureSetIOD::isClinicalTrialSeriesModulePresent(const OFBool /*com
 }
 
 
+OFBool DRTStructureSetIOD::isFrameOfReferenceModulePresent(const OFBool complete)
+{
+    if (complete)
+    {
+        /* check whether all mandatory attributes are present */
+        return !FrameOfReferenceUID.isEmpty();
+    } else {
+        /* check whether at least one attribute is present */
+        return !FrameOfReferenceUID.isEmpty() ||
+               !PositionReferenceIndicator.isEmpty();
+    }
+}
+
+
 OFBool DRTStructureSetIOD::isApprovalModulePresent(const OFBool complete)
 {
     if (complete)
@@ -1310,6 +1365,12 @@ OFCondition DRTStructureSetIOD::getCommentsOnThePerformedProcedureStep(OFString
 }
 
 
+OFCondition DRTStructureSetIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -1340,6 +1401,12 @@ OFCondition DRTStructureSetIOD::getEthnicGroup(OFString &value, const signed lon
 }
 
 
+OFCondition DRTStructureSetIOD::getFrameOfReferenceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(FrameOfReferenceUID, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getGantryID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(GantryID, value, pos);
@@ -1604,6 +1671,12 @@ OFCondition DRTStructureSetIOD::getPixelPaddingValue(Uint16 &value, const unsign
 }
 
 
+OFCondition DRTStructureSetIOD::getPositionReferenceIndicator(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PositionReferenceIndicator, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getQualityControlSubject(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(QualityControlSubject, value, pos);
@@ -2033,6 +2106,15 @@ OFCondition DRTStructureSetIOD::setCommentsOnThePerformedProcedureStep(const OFS
 }
 
 
+OFCondition DRTStructureSetIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2078,6 +2160,15 @@ OFCondition DRTStructureSetIOD::setEthnicGroup(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTStructureSetIOD::setFrameOfReferenceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = FrameOfReferenceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setGantryID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2444,6 +2535,15 @@ OFCondition DRTStructureSetIOD::setPixelPaddingValue(const Uint16 value, const u
 }
 
 
+OFCondition DRTStructureSetIOD::setPositionReferenceIndicator(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PositionReferenceIndicator.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setQualityControlSubject(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
index 328f27b512231067ec2c73680292dc8a97dd21ea..60acc416c8bbe782db828ac8fdd225f681d9ca17 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index dd8a95e1c6dc748fdb49ce1dd21101fa31f7f57f..8d9d2f573a6238589e8e631a50fdb2e0bc53787d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 61780573ff54a954692257d2a8007266346646d2..9748d1481be2e1a9c8974cf5dc1019224b8b5db4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -158,6 +160,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -207,6 +210,8 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -307,6 +312,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -362,6 +368,8 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -462,6 +470,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -512,6 +521,8 @@ void DRTTreatmentSummaryRecordIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -612,6 +623,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -719,6 +731,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -793,6 +806,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -929,6 +944,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1055,6 +1072,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1256,6 +1274,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getCommentsOnThePerformedProcedureStep
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -1958,6 +1982,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setCommentsOnThePerformedProcedureStep
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
index 662333e3864a854f21a1c051c04b85162506ebfd..e9b64a10dccba3bb0341cef919396a4bb7b91708 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 762ec60392ccdfdcec5fda3637e6f9a2dc04cf52..a69c89279b6d4ce01641d618b213a36ac5c9029a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index e4f0a76b49cc4c64a63c96103966e6775c0c003d..c70d66ce5a78ae1113369def868e64c38e3338ff 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index ecacdc77a6f1cccb27b9e474145bd4749eb456d8..bb271cdd0eb9372bd02149997b935c1b8800e138 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 2f69b8bcb586a5232ae5306c048dc391c5d95b05..3694971a8218259f88562ca5532f69fb251a27b3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b6e83bcd45b8e98047193cc20863d69d913969be..3ccbe58f6930a3b1984478605d9709db068096a5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index 8d8e0cb32e24a2277c0c2cfc6a7ef2886380ca63..bac1256008b212fdff625f6d71bb90d2b805866a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtwrsrs.cc b/dcmrt/libsrc/drtwrsrs.cc
new file mode 100644 (file)
index 0000000..c2a748b
--- /dev/null
@@ -0,0 +1,544 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTWADORSRetrievalSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtwrsrs.h"
+
+
+// --- item class ---
+
+DRTWADORSRetrievalSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    RetrieveURL(DCM_RetrieveURL)
+{
+}
+
+
+DRTWADORSRetrievalSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    RetrieveURL(copy.RetrieveURL)
+{
+}
+
+
+DRTWADORSRetrievalSequence::Item::~Item()
+{
+}
+
+
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        RetrieveURL = copy.RetrieveURL;
+    }
+    return *this;
+}
+
+
+void DRTWADORSRetrievalSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        RetrieveURL.clear();
+    }
+}
+
+
+OFBool DRTWADORSRetrievalSequence::Item::isEmpty()
+{
+    return RetrieveURL.isEmpty();
+}
+
+
+OFBool DRTWADORSRetrievalSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, RetrieveURL, "1", "1", "WADORSRetrievalSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(RetrieveURL), "1", "1", "WADORSRetrievalSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::Item::getRetrieveURL(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RetrieveURL, value, pos);
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::Item::setRetrieveURL(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = RetrieveURL.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTWADORSRetrievalSequence::DRTWADORSRetrievalSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTWADORSRetrievalSequence::DRTWADORSRetrievalSequence(const DRTWADORSRetrievalSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTWADORSRetrievalSequence &DRTWADORSRetrievalSequence::operator=(const DRTWADORSRetrievalSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTWADORSRetrievalSequence::~DRTWADORSRetrievalSequence()
+{
+    clear();
+}
+
+
+void DRTWADORSRetrievalSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTWADORSRetrievalSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTWADORSRetrievalSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+unsigned long DRTWADORSRetrievalSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        ++CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        unsigned long idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::getItem(const unsigned long num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsigned long num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsigned long num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const unsigned long num)
+{
+    return getItem(num);
+}
+
+
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const unsigned long num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::removeItem(const unsigned long pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::read(DcmItem &dataset,
+                                             const OFString &card,
+                                             const OFString &type,
+                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_WADORSRetrievalSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_WADORSRetrievalSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTWADORSRetrievalSequence::write(DcmItem &dataset,
+                                              const OFString &card,
+                                              const OFString &type,
+                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_WADORSRetrievalSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index d6bfed4dbc730f0a2e9b6be4e55885dae7e7f501..99b9f5281aef819af502c4f940bbb0b0c40fbf01 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 DRTWedgeSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     AccessoryCode(DCM_AccessoryCode),
+    EffectiveWedgeAngle(DCM_EffectiveWedgeAngle),
     SourceToWedgeTrayDistance(DCM_SourceToWedgeTrayDistance),
     WedgeAngle(DCM_WedgeAngle),
     WedgeFactor(DCM_WedgeFactor),
@@ -36,6 +37,7 @@ DRTWedgeSequence::Item::Item(const OFBool emptyDefaultItem)
 DRTWedgeSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     AccessoryCode(copy.AccessoryCode),
+    EffectiveWedgeAngle(copy.EffectiveWedgeAngle),
     SourceToWedgeTrayDistance(copy.SourceToWedgeTrayDistance),
     WedgeAngle(copy.WedgeAngle),
     WedgeFactor(copy.WedgeFactor),
@@ -58,6 +60,7 @@ DRTWedgeSequence::Item &DRTWedgeSequence::Item::operator=(const Item &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
         AccessoryCode = copy.AccessoryCode;
+        EffectiveWedgeAngle = copy.EffectiveWedgeAngle;
         SourceToWedgeTrayDistance = copy.SourceToWedgeTrayDistance;
         WedgeAngle = copy.WedgeAngle;
         WedgeFactor = copy.WedgeFactor;
@@ -83,6 +86,7 @@ void DRTWedgeSequence::Item::clear()
         WedgeFactor.clear();
         WedgeOrientation.clear();
         SourceToWedgeTrayDistance.clear();
+        EffectiveWedgeAngle.clear();
     }
 }
 
@@ -96,7 +100,8 @@ OFBool DRTWedgeSequence::Item::isEmpty()
            WedgeAngle.isEmpty() &&
            WedgeFactor.isEmpty() &&
            WedgeOrientation.isEmpty() &&
-           SourceToWedgeTrayDistance.isEmpty();
+           SourceToWedgeTrayDistance.isEmpty() &&
+           EffectiveWedgeAngle.isEmpty();
 }
 
 
@@ -121,6 +126,7 @@ OFCondition DRTWedgeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, WedgeFactor, "1", "2", "WedgeSequence");
         getAndCheckElementFromDataset(item, WedgeOrientation, "1", "2", "WedgeSequence");
         getAndCheckElementFromDataset(item, SourceToWedgeTrayDistance, "1", "3", "WedgeSequence");
+        getAndCheckElementFromDataset(item, EffectiveWedgeAngle, "1", "3", "WedgeSequence");
         result = EC_Normal;
     }
     return result;
@@ -141,6 +147,7 @@ OFCondition DRTWedgeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(WedgeFactor), "1", "2", "WedgeSequence");
         addElementToDataset(result, item, new DcmDecimalString(WedgeOrientation), "1", "2", "WedgeSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToWedgeTrayDistance), "1", "3", "WedgeSequence");
+        addElementToDataset(result, item, new DcmDecimalString(EffectiveWedgeAngle), "1", "3", "WedgeSequence");
     }
     return result;
 }
@@ -155,6 +162,24 @@ OFCondition DRTWedgeSequence::Item::getAccessoryCode(OFString &value, const sign
 }
 
 
+OFCondition DRTWedgeSequence::Item::getEffectiveWedgeAngle(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EffectiveWedgeAngle, value, pos);
+}
+
+
+OFCondition DRTWedgeSequence::Item::getEffectiveWedgeAngle(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, EffectiveWedgeAngle).getFloat64(value, pos);
+}
+
+
 OFCondition DRTWedgeSequence::Item::getSourceToWedgeTrayDistance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -276,6 +301,19 @@ OFCondition DRTWedgeSequence::Item::setAccessoryCode(const OFString &value, cons
 }
 
 
+OFCondition DRTWedgeSequence::Item::setEffectiveWedgeAngle(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EffectiveWedgeAngle.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTWedgeSequence::Item::setSourceToWedgeTrayDistance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
index 0698c260d50a6151815faf4383e60683b98f61e9..a9fffff71ddd56fc734bb083d936b3f4d92097a2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
index b6a1b58bd70ff2fbb556d449e7a5e68775c47e50..8535fc6d7fa1ad7d2995afebf30a8c6125d4a10e 100644 (file)
@@ -38,6 +38,8 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -108,13 +110,16 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
@@ -144,11 +149,14 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../include/dcmtk/dcmrt/seq/drtcis.h \
  ../include/dcmtk/dcmrt/seq/drtrdros.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
@@ -156,8 +164,10 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
@@ -245,6 +255,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -287,6 +299,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -381,10 +395,11 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtass.h \
- ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
  ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
@@ -403,8 +418,9 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -438,12 +454,15 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
index 5789f4fcc83ec7707a8a5389ed382d0212daedc5..d023052b4be12fd46a0b12b40eeab9796a2d72e0 100644 (file)
@@ -2,9 +2,9 @@
 PROJECT(dcmseg)
 
 # declare include directories which hold for all subdirectories
-INCLUDE_DIRECTORIES(${dcmseg_SOURCE_DIR}/include  ${dcmfg_SOURCE_DIR}/include ${dcmiod_SOURCE_DIR}/include  ${dcmsr_SOURCE_DIR}/include ${dcmimage_SOURCE_DIR}/include ${dcmimgle_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${ZLIB_INCDIR})
+INCLUDE_DIRECTORIES(${dcmseg_SOURCE_DIR}/include  ${dcmfg_SOURCE_DIR}/include ${dcmiod_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${ZLIB_INCDIR})
 
 # recurse into subdirectories
-FOREACH(SUBDIR libsrc include)
+FOREACH(SUBDIR libsrc include tests)
   ADD_SUBDIRECTORY(${SUBDIR})
 ENDFOREACH(SUBDIR)
index 230ed7be616a1ebd148d59bfb01f6e2366e46818..f1c79ee8752d8d6dd52b86dae232752e858aa9fc 100644 (file)
@@ -83,4 +83,4 @@ distclean:
 
 dependencies:
        (cd libsrc && touch $(DEP) && $(MAKE) dependencies)
-#      (cd tests && touch $(DEP) && $(MAKE) dependencies)
+       (cd tests && touch $(DEP) && $(MAKE) dependencies)
diff --git a/dcmseg/apps/CMakeLists.txt b/dcmseg/apps/CMakeLists.txt
new file mode 100644 (file)
index 0000000..50c5e98
--- /dev/null
@@ -0,0 +1,9 @@
+# declare executables
+FOREACH(PROGRAM makeseg rwseg)
+  DCMTK_ADD_EXECUTABLE(${PROGRAM} ${PROGRAM})
+ENDFOREACH(PROGRAM)
+
+# make sure executables are linked to the corresponding libraries
+FOREACH(PROGRAM makeseg rwseg)
+  DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmseg dcmfg dcmiod dcmdata oflog ofstd)
+ENDFOREACH(PROGRAM)
index ae3415232364de9daaa4b97781dca144430390a1..55a3e0c35bd6be0d9165b9b190dbd01e7721ef98 100644 (file)
@@ -215,7 +215,8 @@ public:
 
   /** Get modality (overwrite from DcmIODCommon. We always return "SEG" here)
    *  @param  value  Reference to variable in which the value should be stored
-   *  @param  pos    Index of the value to get (0..vm-1), -1 for all components
+   *  @param  pos    Index of the value to get. Not evaluated (here for
+   *          consistency with other setter functions).
    *  @return status, EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition getModality(OFString &value,
@@ -225,7 +226,7 @@ public:
    *  @param  segmentNumber The logical segment number
    *  @return The segment if segment number is valid, NULL otherwise
    */
-  virtual DcmSegment* getSegment(const size_t& segmentNumber);
+  virtual DcmSegment* getSegment(const unsigned int segmentNumber);
 
   /** Get logical segment number by providing a pointer to a given segment
    *  @param  segment The segment to find the logical segment number for
@@ -233,36 +234,14 @@ public:
    *  @return OFTrue if segment could be found, OFFalse otherwise.
    */
   virtual OFBool getSegmentNumber(const DcmSegment* segment,
-                                  Uint16& segmentNumber);
+                                  unsigned int& segmentNumber);
 
-  /** Find segments by their segment label
-   *  @param segmentLabel
-   *  @return Vector of segment numbers that match the given label
+  /** Reference to the Performed Procedure Step that led to the creation of this
+   *  segmentation object. This is required if this object is created in an MPPS
+   *  or GPPS workflow.
+   *  @return Reference to the referenced PPS object
    */
-  virtual const OFVector<Uint16> findSegmentByLabel(const OFString& segmentLabel);
-
-  /** Find segments by their segment's category code
-   *  @param  categoryCode The category code to look for
-   *  @return Vector of segment numbers that match the given category
-   */
-  virtual const OFVector<Uint16> findSegmentByCategory(const CodeSequenceMacro& categoryCode);
-
-  /** Find segments by their segment's property type code
-   *  @param  propertyType The property type code to look for
-   *  @return Vector of segment numbers that match the given property type
-   */
-  virtual const OFVector<Uint16> findSegmentyByType(const CodeSequenceMacro& propertyType);
-
-  /** Reference the PPS that led to the creation of this segmentation object.
-   *  This is required if this object is created in an MPPS or GPPS workflow.
-   *  @param refSOPClassUID     The SOP Class UID of the Performed
-   *                            Procedure Step
-   *  @param refSOPInstanceUID  The SOP Instance UID of the Performed
-   *                            Procedure Step
-   *  @return EC_Normal if successful, error otherwise.
-   */
-  virtual void getReferencedPPS(OFString& refSOPClassUID,
-                                OFString& refSOPInstanceUID) const;
+  virtual SOPInstanceReferenceMacro& getReferencedPPS();
 
   /** Get (const) frame data of a specific frame
    *  @param  frameNo The number of the frame to get (starting with 0)
@@ -351,17 +330,6 @@ public:
   virtual OFCondition setContentIdentification(const ContentIdentificationMacro& contentIdentification,
                                                 const OFBool checkValue = OFTrue);
 
-  /** Reference the PPS that led to the creation of this segmentation object.
-   *  This is required if this object is created in an MPPS or GPPS workflow.
-   *  @param refSOPClassUID     The SOP Class UID of the Performed
-   *                            Procedure Step
-   *  @param refSOPInstanceUID  The SOP Instance UID of the Performed
-   *                            Procedure Step
-   *  @return EC_Normal if successful, error otherwise.
-   */
-  virtual OFCondition setReferencedPPS(const OFString& refSOPClassUID,
-                                       const OFString& refSOPInstanceUID);
-
 protected:
 
   /** Protected default constructor. Library users should the factory create..()
@@ -412,11 +380,18 @@ protected:
    */
   virtual OFCondition readSegments(DcmItem& item);
 
-  /** Write frames to given item
+  /** Write fractional frames to given item
    *  @param  dataset The item to write to, usually main dataset level
    *  @return EC_Normal if writing was successful, error otherwise
    */
-  virtual OFCondition writeFrames(DcmItem& dataset);
+  virtual OFCondition writeFractionalFrames(DcmItem& dataset);
+
+  /** Write binary frames to given item
+   *  @param  dataset The item to write to, usually main dataset level
+   *  @return EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition writeBinaryFrames(DcmItem& dataset);
+
 
   /** Write Segmentation Image Module
    *  @param dataset The item to write to, usually main dataset level
@@ -472,15 +447,45 @@ protected:
                                                       Uint16& numberOfFrames,
                                                       OFString& colorModel);
 
+  /** Extracts Frame structures from the given pixel data element. Only
+   *  applicable for binary segmentations. Within the pixel data element, all
+   *  frames are packed next to each other, with the end of one frame and the
+   *  beginning of the next frame packed bit by bit next to each other. The
+   *  resulting Frames are a bit-by-bit copy of their original counterpart.
+   *  However, their first bit is aligned to the first bit/byte in the Frame,
+   *  and the unused bits in the last byte (if any) are zeroed out.
+   *  @param  pixData The pixel data to read from
+   *  @param  numFrames The number of frames to read
+   *  @param  bitsPerFrame The number of bits per frame (usually rows * columns)
+   *  @param  results The resulting frames. Memory for the frames is allocated
+   *          by the method, so the Vector can/should be empty before calling.
+   */
+  virtual void extractFrames(Uint8* pixData,
+                             const size_t numFrames,
+                             const size_t bitsPerFrame,
+                             OFVector< DcmIODTypes::Frame* >& results);
+
+  /** This is the counterpart to the extractFrames() function. It takes a number
+   *  of frames that are in binary segmentation format (i.e. "bit-packed") and
+   *  concatenates them together so the resulting memory block fits the Pixel
+   *  Data format for binary segmentations. Thus method ensure that frames
+   *  are aligned bit for bit concatenated to each other with only (if
+   *  applicable) having unused bits after the last frame.
+   *  @param frames The source frames
+   *  @param pixData The pixel data element data to be filled. Size must be
+   *         at least bitsPerFrame * number of frames.
+   *  @param bitsPerFrame Bits required per frame, usually rows * columns
+   */
+  virtual void concatFrames(OFVector< DcmIODTypes::Frame* > frames,
+                           Uint8* pixData,
+                           const size_t bitsPerFrame);
+
   /** Add frame to segmentation object.
    *  @param  pixData Pixel data to be added. Length must be rows*columns bytes.
    *          Pixel data is copied so it must be freed by the caller.
-   *  @param  segmentNumber The logical segment number (>=1) this frame refers
-   *          to. The segment identified by the segmentNumber must already exist.
    *  @return EC_Normal if adding was successul, error otherwise
    */
-  virtual OFCondition addFrame(Uint8* pixData,
-                               const Uint16 segmentNumber);
+  virtual OFCondition addFrame(Uint8* pixData);
 
   /// Constant code (required by Segmentation IOD) used to fill Derivation
   /// Image Functional Group
index c36d18d5e2c33b0a7b286d670b8a7f62051af089..58d6b8c9608b6f84e586cd14ea4b77cadc2a12e9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -98,7 +98,7 @@ public:
   /** Get Segment Number
    *  @return The Segment number
    */
-  virtual Uint16 getSegmentNumber();
+  virtual unsigned int getSegmentNumber();
 
   /** Get Segment Label
    *  @param  value Reference to variable in which the value should be stored
@@ -165,6 +165,23 @@ public:
                                                        Uint16& a,
                                                        Uint16& b);
 
+  /** Get Tracking ID
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getTrackingID(OFString& value,
+                                    const signed long pos = 0);
+
+  /** Get Tracking UID
+   *  @param  value Reference to variable in which the value should be stored
+   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition getTrackingUID(OFString& value,
+                                     const signed long pos = 0);
+
+
   // -------------- setters --------------------
 
   /** Set Segment Label
@@ -222,6 +239,23 @@ public:
                                                        const Uint16 b,
                                                        const OFBool checkValue = OFTrue);
 
+  /** Set Tracking ID
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setTrackingID(const OFString& value,
+                                    const OFBool checkValue = OFTrue);
+
+  /** Set Tracking UID
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value' for conformance with VR (UI) and VM (1) if enabled
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setTrackingUID(const OFString& value,
+                                     const OFBool checkValue = OFTrue);
+
   // The utility class must access the protected default constructor
   friend class DcmIODUtil;
 
@@ -264,6 +298,12 @@ private:
   /// Recommended Display CIELab Value (US, 3, 3)
   DcmUnsignedShort m_RecommendedDisplayCIELabValue;
 
+  /// Tracking ID (UT, 1, 1C)
+  DcmUnlimitedText m_TrackingID;
+
+  /// Tracking UID (UI, 1, 1C)
+  DcmUniqueIdentifier m_TrackingUID;
+
   /// Rules for data elements within this IOD
   IODRules m_Rules;
 };
index f97cca092621fa549910a567cd3df56c7f1d50e2..b332c9c9fc63543af99bc485ad8a2fd26574152f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -61,6 +61,12 @@ const Uint32 DCM_SEG_MAX_SEGMENTS = 65536;
 extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_MaxSegmentsReached;
 /// error: specified segment does not exist
 extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_NoSuchSegment;
+/// error: unknown segmentation type
+extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_UnknownSegmentationType;
+/// error: invalid value
+extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_InvalidValue;
+/// error: not enough data
+extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_NotEnoughData;
 
 /** General purpose class hiding global functions, constants and types in the
  *  segmentation context from the global namespace.
@@ -288,8 +294,8 @@ public:
 
   /** Set Segment Description
    *  @param  value Value to be set (single value only) or "" for no value
-   *  @param  checkValue Check 'value' for conformance with VR (ST) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setSegmentDescription(const OFString& value,
index 744b7ea1b95b68fce8553d61129387e2d3f6cb67..05f30ee314d012baa3e90a84d66193bc06b2c842 100644 (file)
@@ -52,16 +52,54 @@ public:
    */
   static size_t getBytesForBinaryFrame(const size_t& numPixels);
 
-  /** Unpacks a binary segmentation frame into a "sparse" pixel data frame
-   *  @param  frame The input frame in packed format
-   *  @param  rows  The number of rows in the pixel data
-   *  @param  cols  the number of cols in the pixel data
-   *  @return The segmentation frame in unpacked format
+  /** Unpacks a binary segmentation frame into a "sparse" pixel data frame where
+   *  every resulting byte represents a single bit of the frame being either
+   *  0 (not set) or 1 (set).
+   *  @param  frame The input buffer with the frame in packed format
+   *  @param  rows The rows of the frame
+   *  @param  cols The cols of the frame
+   *  @return The segmentation frame in unpacked format. NULL in case of error.
    */
   static DcmIODTypes::Frame* unpackBinaryFrame(const DcmIODTypes::Frame* frame,
-                                               const Uint16 rows,
-                                               const Uint16 cols);
+                                               Uint16 rows,
+                                               Uint16 cols);
 
+  /** Shifts the given memory block some defined number of bits to the right
+   *  Bits that fall off the last byte are lost (i.e. no "cycled" shift).
+   *  @param  buf The address of the memory buffer to shift
+   *  @param  bufLen The length of the buf memory block in bytes
+   *  @param  numBits The number of bits to shift. Must be 0 <= numBits <= 7.
+   */
+  static void shiftRight(Uint8* buf,
+                         size_t bufLen,
+                         Uint8 numBits);
+
+  /** Shifts the given memory block some defined number of bits to the left.
+   *  Bits that fall off the first byte are lost (i.e. no "cycled" shift).
+   *  @param  buf The address of the memory buffer to shift
+   *  @param  bufLen The length of the buf memory block in bytes
+   *  @param  numBits The number of bits to shift. Must be 0 <= numBits <= 7.
+   */
+  static void shiftLeft(Uint8* buf,
+                        size_t bufLen,
+                        Uint8 numBits);
+
+  /** Dumps a byte as binary number to a string. Only useful for
+   *  debugging purposes.
+   *  @param  b The byte to dump
+   *  @return A string containing b as a binary number
+   */
+  static OFString debugByte2Bin(Uint8 b);
+
+  /** Dumps a memory block byte for byte to the debug log stream. Only useful
+   * for debugging purposes.
+   *  @param  buffer The address of the memory block to dump
+   *  @param  length The length of memory to be dumped
+   *  @param  what String describing what is dumped.
+   */
+  static void debugDumpBin(Uint8* buffer,
+                           size_t length,
+                           const char* what);
 };
 
 #endif // SEGUTILS_H
index d6b3dab3a660a41be7c40cb42a4e4b2917472c7b..0ce0c2b2043766bc11a55fe596d7a830b202e6b1 100644 (file)
@@ -48,6 +48,8 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatient.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -115,6 +117,7 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
@@ -195,6 +198,8 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -264,6 +269,7 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -340,6 +346,8 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -408,6 +416,7 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -453,6 +462,8 @@ segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -524,6 +535,7 @@ segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
index 979d81632a5897340bf8a048a1b7758fc0424e3f..89d491dd11ba4c94cbacb87d7029c8913b10c35e 100644 (file)
@@ -31,8 +31,6 @@
 #include "dcmtk/dcmfg/fgfact.h"
 #include "dcmtk/dcmfg/fgderimg.h"
 
-
-
 // default constructor (protected, instance creation via create() function)
 DcmSegmentation::DcmSegmentation()
 : DcmIODImage(),
@@ -68,8 +66,11 @@ void DcmSegmentation::initIODRules()
   getRules()->addRule(new IODRule(DCM_LossyImageCompressionMethod, "1-n", "1C", "GeneralImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
   getRules()->addRule(new IODRule(DCM_LossyImageCompressionRatio, "1-n","1C", "GeneralImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
 
+  // Override rule from General Series Module
+  getRules()->addRule(new IODRule(DCM_ReferencedPerformedProcedureStepSequence, "1","1C", "SegmentationSeriesModule", DcmIODTypes::IE_SERIES), OFTrue);
+  getRules()->addRule(new IODRule(DCM_SeriesNumber, "1","1", "SegmentationSeriesModule", DcmIODTypes::IE_SERIES), OFTrue);
+
   // Instance Number is also used within Content Identification Macro, disable it there
-  // TODO: Change Content Identification Macro and others to shared_ptr approach
   m_ContentIdentificationMacro.getIODRules().deleteRule(DCM_InstanceNumber);
 }
 
@@ -143,6 +144,7 @@ OFCondition DcmSegmentation::createFractionalSegmentation(DcmSegmentation*& segm
     return result;
 
   segmentation->m_SegmentationType = DcmSegTypes::ST_FRACTIONAL;
+  segmentation->m_SegmentationFractionalType = fractType;
   segmentation->m_MaximumFractionalValue.putUint16(maxFractionalValue);
 
   return result;
@@ -381,8 +383,7 @@ OFCondition DcmSegmentation::addSegment(DcmSegment* seg,
 }
 
 
-OFCondition DcmSegmentation::addFrame(Uint8* pixData,
-                                      const Uint16 segmentNumber)
+OFCondition DcmSegmentation::addFrame(Uint8* pixData)
 {
   OFCondition result;
 
@@ -424,6 +425,12 @@ OFCondition DcmSegmentation::addFrame(Uint8* pixData,
 }
 
 
+SOPInstanceReferenceMacro& DcmSegmentation::getReferencedPPS()
+{
+  return getSeries().getReferencedPPS();
+}
+
+
 const DcmIODTypes::Frame* DcmSegmentation::getFrame(const size_t& frameNo)
 {
   if (frameNo > m_Frames.size() - 1)
@@ -522,7 +529,7 @@ OFCondition DcmSegmentation::addFrame(Uint8* pixData,
   // Insert pixel data
   if (result.good())
   {
-    result = addFrame(pixData, segmentNumber);
+    result = addFrame(pixData);
   }
 
   // Cleanup any per-frame groups that might have been inserted and return
@@ -595,14 +602,6 @@ OFCondition DcmSegmentation::saveFile(const OFString& filename,
 
 /* -- Setter for DICOM attributes -- */
 
-OFCondition DcmSegmentation::setReferencedPPS(const OFString& refSOPClassUID,
-                                              const OFString& refSOPInstanceUID)
-{
-  //TODO
-  return EC_Normal;
-}
-
-
 OFCondition DcmSegmentation::setEquipmentInfo(const IODGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
                                               const OFBool checkValue)
 {
@@ -651,32 +650,30 @@ OFCondition DcmSegmentation::setContentIdentification(const ContentIdentificatio
 
 /* -- Getter for DICOM attributes -- */
 
-void DcmSegmentation::getReferencedPPS(OFString& refSOPClassUID,
-                                       OFString& refSOPInstanceUID) const
-{
-  //TODO
-}
-
-
-DcmSegment* DcmSegmentation::getSegment(const size_t& segmentNumber)
+DcmSegment* DcmSegmentation::getSegment(const unsigned int segmentNumber)
 {
-  if (segmentNumber > m_Segments.size())
+  // check for invalid index
+  if ( (segmentNumber == 0) || (segmentNumber > m_Segments.size()) )
   {
     return NULL;
   }
-  return m_Segments[segmentNumber];
+
+  // logical segment numbering starts with 1, so subtract 1 for vector index
+  return m_Segments[segmentNumber-1];
 }
 
 
 OFBool DcmSegmentation::getSegmentNumber(const DcmSegment* segment,
-                                         Uint16& segmentNumber)
+                                         unsigned int& segmentNumber)
 {
+  segmentNumber = 0;
   size_t max = m_Segments.size();
   for (size_t count = 0; count < max; count++)
   {
     if (m_Segments.at(count) == segment)
     {
-      segmentNumber = count;
+      // logical segment numbering starts with 1 but vector index with 0
+      segmentNumber = count + 1;
       return OFTrue;
     }
   }
@@ -685,31 +682,10 @@ OFBool DcmSegmentation::getSegmentNumber(const DcmSegment* segment,
 }
 
 
-const OFVector<Uint16> DcmSegmentation::findSegmentByLabel(const OFString& segmentLabel)
-{
-  // TODO
-  OFVector<Uint16> temp;
-  return temp;
-}
-
-const OFVector<Uint16> DcmSegmentation::findSegmentByCategory(const CodeSequenceMacro& categoryCode)
-{
-  // TODO
-  OFVector<Uint16> temp;
-  return temp;
-}
-
-
-const OFVector<Uint16> DcmSegmentation::findSegmentyByType(const CodeSequenceMacro& propertyType)
-{
-  // TODO
-  OFVector<Uint16> temp;
-  return temp;
-}
-
-
-OFCondition DcmSegmentation::getModality(OFString& value, const long signed int pos) const
+OFCondition DcmSegmentation::getModality(OFString& value,
+                                         const long signed int pos) const
 {
+  (void)pos;
   // Fixed for Segmentations to value "SEG"
   value = "SEG";
   return EC_Normal;
@@ -762,43 +738,23 @@ OFCondition DcmSegmentation::readFrames(DcmItem& dataset)
   }
 
   /* Read all frames into dedicated data structure */
-  size_t bitsPerFrame = getBitsPerFrame(rows, cols);
-  size_t bytesPerFrame = 0;
-  Uint8* src = pixels;
+  size_t pixelsPerFrame = rows * cols;
   if (m_SegmentationType == DcmSegTypes::ST_BINARY)
   {
-    /* FIXME: Padding of last byte must be implemented if byte is not completely filled */
-    if ( ((rows*cols) % 8) != 0)
-    {
-      DCMSEG_ERROR("TO BE DONE: Cannot write binary segmentations where pixel data bytes are not dividable by 8");
-      return EC_IllegalCall;
-    }
-    bytesPerFrame = DcmSegUtils::getBytesForBinaryFrame(bitsPerFrame);
-    for (size_t frameCount = 0; frameCount < numberOfFrames; frameCount++)
-    {
-      DcmIODTypes::Frame *frame = new DcmIODTypes::Frame();
-      frame->length = bytesPerFrame;
-      frame->pixData = new Uint8[bytesPerFrame];
-      memcpy(frame->pixData, src, bytesPerFrame);
-      src = src + bytesPerFrame;
-      m_Frames.push_back(frame);
-    }
+      extractFrames(pixels, numberOfFrames, pixelsPerFrame, m_Frames);
   }
   else if (m_SegmentationType == DcmSegTypes::ST_FRACTIONAL)
   {
-    bytesPerFrame = rows * cols;
     for (size_t count = 0; count < numberOfFrames; count++)
     {
       DcmIODTypes::Frame *frame = new DcmIODTypes::Frame();
-      frame->length = bytesPerFrame;
-      frame->pixData= new Uint8[bytesPerFrame];
-      memcpy(frame->pixData, pixels + count*bytesPerFrame, bytesPerFrame);
+      frame->length = pixelsPerFrame;
+      frame->pixData= new Uint8[pixelsPerFrame];
+      memcpy(frame->pixData, pixels + count* pixelsPerFrame, pixelsPerFrame);
       m_Frames.push_back(frame);
     }
   }
 
-  /* remove original pixel data copy from memory */
-  pixelData->compact();
   return result;
 }
 
@@ -935,10 +891,9 @@ OFCondition DcmSegmentation::writeMultiFrameDimensionModule(DcmItem& dataset)
 }
 
 
-OFCondition DcmSegmentation::writeFrames(DcmItem& dataset)
+OFCondition DcmSegmentation::writeFractionalFrames(DcmItem& dataset)
 {
   OFCondition result;
-  // TODO: Consistency checks with attributes
   Uint16 rows,cols;
   rows = cols = 0;
   getImagePixel().getRows(rows);
@@ -946,6 +901,7 @@ OFCondition DcmSegmentation::writeFrames(DcmItem& dataset)
   size_t numBytes = getTotalBytesRequired(rows, cols, m_Frames.size());
   Uint8* pixdata = new Uint8[numBytes];
   OFVector<DcmIODTypes::Frame*>::iterator it = m_Frames.begin();
+  // Just copy bytes for each frame as is
   for (size_t count = 0; it != m_Frames.end(); count++)
   {
     memcpy(pixdata + count*(*it)->length, (*it)->pixData, (*it)->length);
@@ -957,6 +913,28 @@ OFCondition DcmSegmentation::writeFrames(DcmItem& dataset)
 }
 
 
+OFCondition DcmSegmentation::writeBinaryFrames(DcmItem& dataset)
+{
+  OFCondition result;
+  Uint16 rows,cols;
+  rows = cols = 0;
+  getImagePixel().getRows(rows);
+  getImagePixel().getColumns(cols);
+  size_t numBytes = getTotalBytesRequired(rows, cols, m_Frames.size());
+  // Holds the pixels for all frames. Each bit represents a pixel which is either
+  // 1 (part of segment) or 0 (not part of segment. All frames are directly
+  // concatenated, i.e. there are no unused bits between the frames.
+  Uint8* pixdata = new Uint8[numBytes];
+  memset(pixdata, 0, numBytes);
+
+  // Fill Pixel Data Element
+  concatFrames(m_Frames, pixdata, rows*cols);
+  result = dataset.putAndInsertUint8Array(DCM_PixelData, pixdata, numBytes, OFTrue);
+  delete [] pixdata;
+  return result;
+}
+
+
 OFCondition DcmSegmentation::writeSegmentationImageModule(DcmItem& dataset)
 {
   dataset.putAndInsertOFStringArray(DCM_ImageType, "DERIVED\\PRIMARY");
@@ -1038,7 +1016,12 @@ OFCondition DcmSegmentation::writeSegmentationImageModule(DcmItem& dataset)
   }
 
   /* Write frame pixel data */
-  if (result.good()) result = writeFrames(dataset);
+  if (result.good())
+  {
+    if (m_SegmentationType == DcmSegTypes::ST_BINARY) result = writeBinaryFrames(dataset);
+    else if (m_SegmentationType == DcmSegTypes::ST_BINARY) result = writeFractionalFrames(dataset);
+    else result = SG_EC_UnknownSegmentationType;
+  }
 
   return result;
 }
@@ -1068,7 +1051,8 @@ OFBool DcmSegmentation::checkPixDataLength(DcmElement* pixelData,
 
   // Find out how many bytes are needed
   size_t bytesRequired = getTotalBytesRequired(rows, cols, numberOfFrames);
-
+  // Length found in Pixel Data element is always even
+  if (bytesRequired % 2 == 1) bytesRequired++;
   /* Compare expected and actual length */
   if (length < bytesRequired)
   {
@@ -1108,14 +1092,19 @@ size_t DcmSegmentation::getTotalBytesRequired(const Uint16& rows,
 {
   size_t bytesRequired = rows * cols * numberOfFrames;
   /* for binary, we only need one bit per pixel */
+  size_t remainder = 0;
   if (m_SegmentationType == DcmSegTypes::ST_BINARY)
   {
     // check whether the 1-bit pixels exactly fit into bytes
-    size_t remainder = bytesRequired % 8;
+    remainder = (rows * cols) % 8;
     // number of bytes that work on an exact fit
     bytesRequired = bytesRequired / 8;
     // add one byte if we have a remainder
-    if (remainder > 0) bytesRequired++;
+    if (remainder > 0)
+    {
+      bytesRequired++;
+    }
+
   }
   return bytesRequired;
 }
@@ -1264,3 +1253,108 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset)
   }
   return result;
 }
+
+
+void DcmSegmentation::extractFrames(Uint8* pixData,
+                                   const size_t numFrames,
+                                   const size_t bitsPerFrame,
+                                   OFVector< DcmIODTypes::Frame* >& results)
+{
+  // Will hold the bit position (0-7) that the current frame starts from. The
+  // first frame will always start at bit 0.
+  Uint8  bitShift = 0;
+  // Compute length in bytes we need to consider for each frame.
+  size_t frameLengthBytes = bitsPerFrame / 8;
+  // If the number of bits is not dividable by 8, we need part of an extra
+  // byte in the end. Since we like to set the unused bits to 0 in such a last
+  // byte to 0, remember the number.
+  size_t overlapBits = (8 - (bitsPerFrame % 8)) % 8;
+  // Add an extra byte if we we fill a partial byte in the end
+  if (overlapBits != 0) frameLengthBytes++;
+  // Points to current reading position within pixeldata
+  Uint8* readPos = pixData;
+  // Loop over each frame and copy it to Frame structures
+  for (size_t f = 0; f < numFrames; f++)
+  {
+    // Create frame with correct length and copy 1:1 from pixel data
+    DcmIODTypes::Frame* frame = new DcmIODTypes::Frame();
+    frame->length = frameLengthBytes;
+    frame->pixData = new Uint8[frameLengthBytes];
+    memcpy(frame->pixData, readPos, frame->length);
+    // If we have been copying too much, i.e the first bits of the frame
+    // actually belong to the former frame, shift the whole frame this amount
+    // of bits to the left in order to shift the superfluous bits out
+    if (bitShift > 0)
+    {
+      DcmSegUtils::shiftLeft(frame->pixData, frame->length, 8-bitShift);
+    }
+    // Adapt last byte by masking out unused bits (i.e. those belonging to next frame).
+    // A reader should ignore those unused bits anyway.
+    frame->pixData[frame->length-1] = (frame->pixData[frame->length-1] >> (overlapBits)) << (overlapBits);
+    // Store frame
+    results.push_back(frame);
+    // Compute the bitshift created by this frame
+    bitShift = ( 8- ((f+1) * bitsPerFrame) % 8 ) % 8;
+    // If the last byte read has not been used completely, i.e. it contains
+    // also bytes of the next frame, rewind read position to the last byte
+    // that was partially read. Otherwise skip to the next full byte.
+    if (bitShift > 0)
+    {
+      readPos = readPos + frame->length - 1;
+    }
+    else
+    {
+      readPos = readPos + frame->length;
+    }
+  }
+}
+
+
+void DcmSegmentation::concatFrames(OFVector< DcmIODTypes::Frame* > frames,
+                                   Uint8* pixData,
+                                   const size_t bitsPerFrame)
+{
+  // Writing position within the pixData memory
+  Uint8 *writePos = pixData;
+  OFVector<DcmIODTypes::Frame*>::iterator frame = frames.begin();
+  Uint8 freeBits = 0;
+  Uint8 firstByte = 0;
+  // Iterate over frames and copy each to pixdata memory
+  for (size_t f = 0; frame != frames.end(); f++)
+  {
+    DCMSEG_DEBUG("Packing segmentation frame #" << f+1 << "/" << frames.size());
+    // Backup first byte of the destination since it may contain bits of the
+    // last frame; mask out those bits not belonging to last frame.
+    firstByte = (writePos[0] >> freeBits) << freeBits;
+    memcpy(writePos, (*frame)->pixData, (*frame)->length);
+    // If the last frame left over some unused bits, shift the current frame
+    // that number of bits to the right and restore the original bits of the
+    // last frame
+    if (freeBits > 0)
+    {
+      DcmSegUtils::shiftRight(writePos, (*frame)->length, 8-freeBits);
+      writePos[0] |= firstByte;
+    }
+    // Compute free bits left over from this frame in the last byte written
+    freeBits = (8 - (( (f+1) * bitsPerFrame ) % 8)) % 8;
+    // If we have free bits, the last byte written to will be the first byte
+    // we write to for the next frame. Otherwise start with a fresh destination
+    // byte.
+    if (freeBits > 0)
+    {
+      writePos = writePos + (*frame)->length - 1;
+    }
+    else
+    {
+      writePos = writePos + (*frame)->length;
+    }
+    // Next frame
+    frame++;
+  }
+  // Through shifting we can have non-zero bits within the unused bits of the
+  // last byte. Fill them with zeroes (though not required by the standard).
+  if (freeBits > 0)
+  {
+    *writePos = (*writePos >> freeBits) << freeBits;
+  }
+}
index 88b14e5455faafc43b3d8aad7ac7123d2ab12080..df1ef2d3b6669eed64e0685ed3feb741e96f16d3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -86,6 +86,8 @@ OFCondition DcmSegment::read(DcmItem& item,
 
   DcmIODUtil::getAndCheckElementFromDataset(item, m_RecommendedDisplayGrayscaleValue, m_Rules.getByTag(DCM_RecommendedDisplayGrayscaleValue));
   DcmIODUtil::getAndCheckElementFromDataset(item, m_RecommendedDisplayCIELabValue, m_Rules.getByTag(DCM_RecommendedDisplayCIELabValue));
+  DcmIODUtil::getAndCheckElementFromDataset(item, m_TrackingID, m_Rules.getByTag(DCM_TrackingID));
+  DcmIODUtil::getAndCheckElementFromDataset(item, m_TrackingUID, m_Rules.getByTag(DCM_TrackingUID));
 
   return EC_Normal;
 }
@@ -110,6 +112,8 @@ OFCondition DcmSegment::write(DcmItem& item)
 
   DcmIODUtil::copyElementToDataset(result, item, m_RecommendedDisplayGrayscaleValue, m_Rules.getByTag(DCM_RecommendedDisplayGrayscaleValue));
   DcmIODUtil::copyElementToDataset(result, item, m_RecommendedDisplayCIELabValue, m_Rules.getByTag(DCM_RecommendedDisplayCIELabValue));
+  DcmIODUtil::copyElementToDataset(result, item, m_TrackingID, m_Rules.getByTag(DCM_TrackingID));
+  DcmIODUtil::copyElementToDataset(result, item, m_TrackingUID, m_Rules.getByTag(DCM_TrackingUID));
 
   return result;
 }
@@ -123,6 +127,8 @@ void DcmSegment::clearData()
   m_SegmentSurfaceGenerationAlgorithmIdentification.clearData();
   m_RecommendedDisplayGrayscaleValue.clear();
   m_RecommendedDisplayCIELabValue.clear();
+  m_TrackingID.clear();
+  m_TrackingUID.clear();
 }
 
 
@@ -133,7 +139,7 @@ DcmSegment::~DcmSegment()
 }
 
 
-// protected default contstrucotr
+// protected default constructor
 DcmSegment::DcmSegment() :
   m_SegmentationDoc(NULL),
   m_SegmentDescription(),
@@ -141,6 +147,8 @@ DcmSegment::DcmSegment() :
   m_SegmentSurfaceGenerationAlgorithmIdentification(),
   m_RecommendedDisplayGrayscaleValue(DCM_RecommendedDisplayGrayscaleValue),
   m_RecommendedDisplayCIELabValue(DCM_RecommendedDisplayCIELabValue),
+  m_TrackingID(DCM_TrackingID),
+  m_TrackingUID(DCM_TrackingUID),
   m_Rules()
 {
   initIODRules();
@@ -152,14 +160,16 @@ void DcmSegment::initIODRules()
   m_Rules.addRule(new IODRule(DCM_SegmentAlgorithmName, "1","1C","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules.addRule(new IODRule(DCM_RecommendedDisplayGrayscaleValue, "1","3","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules.addRule(new IODRule(DCM_RecommendedDisplayCIELabValue, "3","3","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules.addRule(new IODRule(DCM_TrackingID, "1","1C","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules.addRule(new IODRule(DCM_TrackingUID, "1","1C","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
 }
 
 
 // -------------- getters --------------------
 
-Uint16 DcmSegment::getSegmentNumber()
+unsigned int DcmSegment::getSegmentNumber()
 {
-  Uint16 value = 0;
+  unsigned int value = 0;
   if (m_SegmentationDoc != NULL)
   {
     m_SegmentationDoc->getSegmentNumber(this, value);
@@ -222,7 +232,7 @@ OFVector< CodeSequenceMacro* >& DcmSegment::getSegmentedPropertyTypeModifierCode
 OFCondition DcmSegment::getRecommendedDisplayGrayscaleValue(Uint16& value,
                                                             const unsigned long pos)
 {
-  return m_RecommendedDisplayGrayscaleValue.getUint16(value, 0);
+  return m_RecommendedDisplayGrayscaleValue.getUint16(value, pos);
 }
 
 
@@ -240,6 +250,21 @@ OFCondition DcmSegment::getRecommendedDisplayCIELabValue(Uint16& L,
   return result;
 }
 
+
+OFCondition DcmSegment::getTrackingID(OFString& value,
+                                      const signed long pos)
+{
+  return DcmIODUtil::getStringValueFromElement(m_TrackingID, value, pos);
+}
+
+
+OFCondition DcmSegment::getTrackingUID(OFString& value,
+                                       const signed long pos)
+{
+  return DcmIODUtil::getStringValueFromElement(m_TrackingUID, value, pos);
+}
+
+
 // -------------- setters --------------------
 
 
@@ -334,6 +359,30 @@ OFCondition DcmSegment::setRecommendedDisplayCIELabValue(const Uint16 r,
 }
 
 
+OFCondition DcmSegment::setTrackingID(const OFString& value,
+                                      const OFBool checkValue)
+{
+  // avoid compile warning on unused variable
+  (void)checkValue;
+  return m_TrackingID.putOFStringArray(value);
+}
+
+
+OFCondition DcmSegment::setTrackingUID(const OFString& value,
+                                       const OFBool checkValue)
+{
+  OFCondition result;
+  if (checkValue)
+  {
+    result = DcmUniqueIdentifier::checkStringValue(value, "1");
+  }
+  if (result.good())
+  {
+    result = m_TrackingUID.putOFStringArray(value);
+  }
+  return result;
+}
+
 
 void DcmSegment::referenceSegmentationDoc(DcmSegmentation* doc)
 {
index 3b5b952faa6bcffd4ed2400f270dc1e69847c5fc..58b10ef29bc9773ffab1369bfa66b19c8fb8e59f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -32,9 +32,12 @@ OFLogger DCM_dcmsegLogger = OFLog::getLogger("dcmtk.dcmseg");
  *---------------------------------*/
 
 // conditions
-makeOFConditionConst(SG_EC_MaxSegmentsReached,  OFM_dcmseg, 1, OF_error, "Maximum Number of Functional Groups reached");
-makeOFConditionConst(SG_EC_NoSuchSegment,       OFM_dcmseg, 2, OF_error,  "No such segment");
-makeOFConditionConst(SG_EC_InvalidValue,        OFM_dcmseg, 4, OF_error,  "Invalid value for Segmentation SOP Class");
+makeOFConditionConst(SG_EC_MaxSegmentsReached,      OFM_dcmseg, 1, OF_error, "Maximum Number of Functional Groups reached");
+makeOFConditionConst(SG_EC_NoSuchSegment,           OFM_dcmseg, 2, OF_error,  "No such segment");
+makeOFConditionConst(SG_EC_UnknownSegmentationType, OFM_dcmseg, 3, OF_error,  "Unknown Segmentation Type");
+makeOFConditionConst(SG_EC_InvalidValue,            OFM_dcmseg, 4, OF_error,  "Invalid value for Segmentation SOP Class");
+makeOFConditionConst(SG_EC_NotEnoughData,           OFM_dcmseg, 5, OF_error,  "Not enough data");
+
 
 DcmSegTypes::E_SegmentationType DcmSegTypes::OFString2Segtype(const OFString& value)
 {
@@ -204,10 +207,8 @@ OFCondition SegmentDescriptionMacro::setSegmentLabel(const OFString& value,
 OFCondition SegmentDescriptionMacro::setSegmentDescription(const OFString& value,
                                                            const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmShortText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_SegmentDescription.putOFStringArray(value);
-  return result;
+  (void)checkValue;
+  return  m_SegmentDescription.putOFStringArray(value);
 }
 
 
index c74b910224df4997192ccbce8a1463665f396709..918778e7cd712c331e9fa6d7469bdb566efb02f0 100644 (file)
@@ -53,7 +53,7 @@ DcmIODTypes::Frame* DcmSegUtils::packBinaryFrame(Uint8* pixelData,
     delete frame;
     return NULL;
   }
-  memset(frame->pixData, 0, sizeof(Uint8)*frame->length);
+  memset(frame->pixData, 0, frame->length);
 
   size_t bytePos = 0;
   for (size_t count = 0; count < numPixels; count++)
@@ -67,39 +67,34 @@ DcmIODTypes::Frame* DcmSegUtils::packBinaryFrame(Uint8* pixelData,
 
 
 DcmIODTypes::Frame* DcmSegUtils::unpackBinaryFrame(const DcmIODTypes::Frame* frame,
-                                                   const Uint16 rows,
-                                                   const Uint16 cols)
+                                                   Uint16 rows,
+                                                   Uint16 cols)
 {
   // Sanity checking
-  if ( (frame->length == 0) || (frame->pixData == NULL) || (rows == 0) || (cols == 0))
+  if ( (frame == NULL) || (rows == 0) || (cols == 0) )
   {
-    DCMSEG_ERROR("Cannot unpack binary frame, invalid input data: frame length and data, as well as rows and columnst cannot be 0");
-    return NULL;
-  }
-  const Uint32 numPixels = rows*cols;
-  if ( getBytesForBinaryFrame(numPixels) > frame->length)
-  {
-    DCMSEG_ERROR("Cannot unpack binary frame, not enough input data (require " << numPixels / 8 << " but only got " << frame->length << " bytes)");
+    DCMSEG_ERROR("Cannot unpack binary frame, invalid input data");
     return NULL;
   }
 
   // Create result frame in memory
+  size_t numBits = rows * cols;
   DcmIODTypes::Frame* result = new DcmIODTypes::Frame();
   if (result)
   {
-    result->pixData = new Uint8[numPixels];
-    result->length = numPixels;
+    result->pixData = new Uint8[numBits];
+    result->length = numBits;
   }
   if ( !result || !(result->pixData) )
   {
     DCMSEG_ERROR("Cannot unpack binary frame, memory exhausted");
     return NULL;
   }
-  memset(result->pixData, 0, sizeof(Uint8)*result->length);
+  memset(result->pixData, 0, result->length);
 
   // Transform and copy from packed frame to unpacked result frame
   size_t bytePos = 0;
-  for (size_t count = 0; count < numPixels; count++)
+  for (size_t count = 0; count < numBits; count++)
   {
     // Compute byte position
     bytePos = count / 8;
@@ -128,3 +123,74 @@ size_t DcmSegUtils::getBytesForBinaryFrame(const size_t& numPixels)
   if (remainder > 0) bytesRequired++;
   return bytesRequired;
 }
+
+
+void DcmSegUtils::shiftRight(Uint8* buf,
+                             size_t bufLen,
+                             Uint8 numBits)
+{
+  if (numBits > 7)
+  {
+    DCMSEG_ERROR("Invalid input data: shiftRight() can only shift 0-7 bits");
+    return;
+  }
+  Uint8 carryOver = 0;
+  for (size_t x = 0; x < bufLen; x++)
+  {
+    // Store current byte since we need its last bits
+    Uint8 current = buf[x];
+    buf[x] >>= numBits;
+    // If there is a carry over from the last handled byte, add it
+    buf[x] |= carryOver;
+    // Compute carry over bits for next byte handled
+    carryOver = current << (8-numBits); // bits we need to shift over to start (left hand side) of buf[x+1]
+  }
+}
+
+
+void DcmSegUtils::shiftLeft(Uint8* buf,
+                            size_t bufLen,
+                            Uint8 numBits)
+{
+  if (numBits > 7)
+  {
+    DCMSEG_ERROR("Invalid input data: shiftLeft() can only shift 0-7 bits");
+    return;
+  }
+  for (size_t x = 0; x < bufLen-1; x++)
+  {
+    // Shift current byte
+    buf[x] = buf[x] << numBits;
+    // isolate portion of next byte that must be shifted into current byte
+    Uint8 next = (buf[x+1] >> (8-numBits));
+    // Shift current byte
+    buf[x] |= next;
+  }
+  // Shift last byte manually
+  buf[bufLen-1] <<= numBits;
+}
+
+
+void DcmSegUtils::debugDumpBin(Uint8* buffer,
+                               size_t length,
+                               const char* what)
+{
+  for (size_t n=0; n<length; n++)
+  {
+    DCMSEG_DEBUG(what << " #" << n << ": " << (size_t)(buffer[n]) << ", bytepos " << (size_t)(&(buffer[n])) << " (" << debugByte2Bin((buffer[n])) << ")");
+  }
+  DCMSEG_DEBUG("");
+}
+
+
+OFString DcmSegUtils::debugByte2Bin(Uint8 b)
+{
+  OFString result("",8);
+  for (int i = 7; i >= 0; i--)
+  {
+    result[i]= (b & 1) + '0';
+
+    b >>= 1;
+  }
+  return result;
+}
diff --git a/dcmseg/tests/CMakeLists.txt b/dcmseg/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..75e108d
--- /dev/null
@@ -0,0 +1,8 @@
+# declare executables
+DCMTK_ADD_EXECUTABLE(dcmseg_tests tests tutils)
+
+# make sure executables are linked to the corresponding libraries
+DCMTK_TARGET_LINK_MODULES(dcmseg_tests dcmseg dcmfg dcmiod dcmdata oflog ofstd)
+
+# This macro parses tests.cc and registers all tests
+DCMTK_ADD_TESTS(dcmseg)
diff --git a/dcmseg/tests/Makefile.dep b/dcmseg/tests/Makefile.dep
new file mode 100644 (file)
index 0000000..d3504b4
--- /dev/null
@@ -0,0 +1,166 @@
+tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h
+tutils.o: tutils.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../include/dcmtk/dcmseg/segutils.h ../include/dcmtk/dcmseg/segdef.h \
+ ../include/dcmtk/dcmseg/segtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
index 6647f17a34dd45d5c6a93061cbf35b6562912825..515c4dbcbc522e70947cd878269a60aab6fe9656 100644 (file)
@@ -5,25 +5,56 @@
 @SET_MAKE@
 
 SHELL = /bin/sh
+VPATH = @srcdir@:@top_srcdir@/include:@top_srcdir@/@configdir@/include
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 configdir = @top_srcdir@/@configdir@
 
+ofstddir = $(top_srcdir)/../ofstd
+oflogdir = $(top_srcdir)/../oflog
+dcmdatadir = $(top_srcdir)/../dcmdata
+dcmioddir = $(top_srcdir)/../dcmiod
+dcmfgdir = $(top_srcdir)/../dcmfg
+
+
 include $(configdir)/@common_makefile@
 
+LIBDIRS = -L$(top_srcdir)/libsrc -L$(ofstddir)/libsrc -L$(oflogdir)/libsrc \
+       -L$(dcmdatadir)/libsrc -L$(dcmioddir)/libsrc -L$(dcmfgdir)/libsrc
+LOCALLIBS = -ldcmseg -ldcmfg -ldcmiod -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
+LOCALINCLUDES = -I$(top_srcdir)/include -I$(ofstddir)/include -I$(oflogdir)/include \
+       -I$(dcmdatadir)/include -I$(dcmioddir)/include -I$(dcmfgdir)/include \
+
+
+test_objs = tests.o tutils.o
+objs = $(test_objs)
+progs = tests
+
+
+all: $(progs)
 
-all:
+tests: $(test_objs)
+       $(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
 
-check:
 
-check-exhaustive:
+check: tests
+       ./tests
+
+check-exhaustive: tests
+       ./tests -x
+
+
+install: all
 
-install:
 
 clean:
-       rm -f $(TRASH)
+       rm -f $(objs) $(progs) $(LOCALTRASH) $(TRASH)
 
 distclean:
-       rm -f $(DISTTRASH)
+       rm -f $(objs) $(progs) $(LOCALTRASH) $(DISTTRASH)
+
 
 dependencies:
+       $(CXX) -MM $(defines) $(includes) $(CPPFLAGS) $(CXXFLAGS) *.cc  > $(DEP)
+
+include $(DEP)
diff --git a/dcmseg/tests/tests.cc b/dcmseg/tests/tests.cc
new file mode 100644 (file)
index 0000000..6e7b462
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *
+ *  Copyright (C) 2015, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmseg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: main test program
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/oftest.h"
+
+OFTEST_REGISTER(dcmseg_utils);
+OFTEST_MAIN("dcmseg")
diff --git a/dcmseg/tests/tutils.cc b/dcmseg/tests/tutils.cc
new file mode 100644 (file)
index 0000000..59b8b49
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *
+ *  Copyright (C) 2015, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmseg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: tests for dcmseg's DcmSegUtils functionalities
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmseg/segutils.h"
+
+OFTEST(dcmseg_utils)
+{
+  // buf = 10101010 11001100 11110000 00001111
+  Uint8 buf[4];
+  buf[0] = 0xAA; // 10101010
+  buf[1] = 0xCC; // 11001100
+  buf[2] = 0xF0; // 11110000
+  buf[3] = 0x0F; // 00001111
+
+  // Shift and check, should be 00101010 10110011 00111000 00000011
+  DcmSegUtils::shiftRight(buf, 4, 2);
+  OFCHECK(buf[0] == 0x2A); // 00101010 = 42 = 0x2A
+  OFCHECK(buf[1] == 0xB3); // 10110011 = 179 = 0xB3
+  OFCHECK(buf[2] == 0x3C); // 00111100 = 60 = 0x3C
+  OFCHECK(buf[3] == 0x03); // 00000011 = 0 = 0x03
+
+  // Shift and check, should be 10101010 11001100 11110000 00001100
+  DcmSegUtils::shiftLeft(buf, 4, 2);
+  OFCHECK(buf[0] == 0xAA); // 10101010
+  OFCHECK(buf[1] == 0xCC); // 11001100
+  OFCHECK(buf[2] == 0xF0); // 11110000
+  OFCHECK(buf[3] == 0x0C); // 00001100
+
+  // Shift and check, should be 00000001 01010101 10011001 11100000
+  DcmSegUtils::shiftRight(buf, 4, 7);
+  OFCHECK(buf[0] == 0x01); // 00000001
+  OFCHECK(buf[1] == 0x55); // 01010101
+  OFCHECK(buf[2] == 0x99); // 10011001
+  OFCHECK(buf[3] == 0xE0); // 11100000
+
+  // Shift and check, should be 10101010 11001100 11110000 00000000
+  DcmSegUtils::shiftLeft(buf, 4, 7);
+  OFCHECK(buf[0] == 0xAA); // 10101010
+  OFCHECK(buf[1] == 0xCC); // 11001100
+  OFCHECK(buf[2] == 0xF0); // 11110000
+  OFCHECK(buf[3] == 0x00); // 00000000
+
+}
index c82aa801c663875f918ea92d50ea840a6f92486a..c14b759a33c1f5e4c47fa8383ad1bb9a283d85bb 100644 (file)
@@ -39,6 +39,8 @@ dcmsign.o: dcmsign.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmsign/dcsignat.h ../include/dcmtk/dcmsign/sitypes.h \
  ../include/dcmtk/dcmsign/sidefine.h \
@@ -115,4 +117,5 @@ dcmsign.o: dcmsign.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h
index 114d3c26c88c57bfb9a04f12cc1e9f243d0a399b..84d73a773ffd099a86adfaf2251dc50a45c5aa91 100644 (file)
@@ -41,6 +41,8 @@ dcsignat.o: dcsignat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -117,6 +119,8 @@ siautopr.o: siautopr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -166,6 +170,8 @@ sibrsapr.o: sibrsapr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -190,6 +196,8 @@ sicert.o: sicert.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -286,6 +294,8 @@ sicreapr.o: sicreapr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -349,6 +359,8 @@ simaccon.o: simaccon.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -425,6 +437,8 @@ sinullpr.o: sinullpr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -525,6 +539,8 @@ sisprof.o: sisprof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
index 35c1a962aab5852ba0e5fd04b7b1a66179e251de..39a91bad7f584bc442a78509676ac6c3f0eac0e6 100644 (file)
@@ -42,6 +42,8 @@ dsr2html.o: dsr2html.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -110,11 +112,12 @@ dsr2html.o: dsr2html.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -124,7 +127,8 @@ dsr2html.o: dsr2html.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -172,6 +176,8 @@ dsr2xml.o: dsr2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -240,11 +246,12 @@ dsr2xml.o: dsr2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -254,7 +261,8 @@ dsr2xml.o: dsr2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -302,6 +310,8 @@ dsrdump.o: dsrdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -370,11 +380,12 @@ dsrdump.o: dsrdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -384,7 +395,8 @@ dsrdump.o: dsrdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -432,6 +444,8 @@ xml2dsr.o: xml2dsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -500,11 +514,12 @@ xml2dsr.o: xml2dsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -514,7 +529,8 @@ xml2dsr.o: xml2dsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrmz.h
index c0e906166802e60f8981b1aa6021af39b2705413..89250a022164b9faa4d065dcdd84219e794f7c8e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2014, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -102,6 +102,9 @@ static OFCondition renderFile(STD_NAMESPACE ostream &out,
             OFLOG_FATAL(dsr2htmlLogger, result.text() << ": converting file to UTF-8: " << ifname);
         }
     }
+#else
+    // avoid compiler warning on unused variable
+    (void)convertToUTF8;
 #endif
     if (result.good())
     {
@@ -127,33 +130,19 @@ static OFCondition renderFile(STD_NAMESPACE ostream &out,
                         OFLOG_DEBUG(dsr2htmlLogger, "use option --charset-assume to manually specify an appropriate character set");
                         result = EC_IllegalCall;
                     } else {
-                        OFString charsetStr(defaultCharset);
                         // use the default character set specified by the user
-                        if (charsetStr == "ISO_IR 192")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_UTF8);
-                        else if (charsetStr == "ISO_IR 100")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin1);
-                        else if (charsetStr == "ISO_IR 101")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin2);
-                        else if (charsetStr == "ISO_IR 109")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin3);
-                        else if (charsetStr == "ISO_IR 110")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin4);
-                        else if (charsetStr == "ISO_IR 148")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin5);
-                        else if (charsetStr == "ISO_IR 144")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Cyrillic);
-                        else if (charsetStr == "ISO_IR 127")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Arabic);
-                        else if (charsetStr == "ISO_IR 126")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Greek);
-                        else if (charsetStr == "ISO_IR 138")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Hebrew);
-                        else {
+                        result = dsrdoc->setSpecificCharacterSet(defaultCharset);
+                        if (dsrdoc->getSpecificCharacterSetType() == DSRTypes::CS_unknown)
+                        {
                             OFLOG_FATAL(dsr2htmlLogger, OFFIS_CONSOLE_APPLICATION << ": Character set '"
                                 << defaultCharset << "' specified with option --charset-assume not supported");
                             result = EC_IllegalCall;
                         }
+                        else if (result.bad())
+                        {
+                            OFLOG_FATAL(dsr2htmlLogger, OFFIS_CONSOLE_APPLICATION << ": Cannot use character set '"
+                                << defaultCharset << "' specified with option --charset-assume: " << result.text());
+                        }
                     }
                 }
                 if (result.good())
@@ -225,7 +214,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-require",      "+Cr",    "require declaration of ext. charset (default)");
         cmd.addOption("--charset-assume",       "+Ca", 1, "[c]harset: string",
                                                           "assume charset c if no extended charset declared");
-        cmd.addOption("--charset-check-all",              "check all data elements with string values\n(default: only PN, LO, LT, SH, ST and UT)");
+        cmd.addOption("--charset-check-all",              "check all data elements with string values\n(default: only PN, LO, LT, SH, ST, UC and UT)");
 #ifdef WITH_LIBICONV
         cmd.addOption("--convert-to-utf8",      "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
index a0006b848f26e213ecd25f4b6bf976efaec1aa60..71e8e22a5fa442af3c60a8caec024b63f09b6a37 100644 (file)
@@ -78,33 +78,19 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                         OFLOG_DEBUG(dsr2xmlLogger, "use option --charset-assume to manually specify an appropriate character set");
                         result = EC_IllegalCall;
                     } else {
-                        OFString charsetStr(defaultCharset);
                         // use the default character set specified by the user
-                        if (charsetStr == "ISO_IR 192")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_UTF8);
-                        else if (charsetStr == "ISO_IR 100")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin1);
-                        else if (charsetStr == "ISO_IR 101")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin2);
-                        else if (charsetStr == "ISO_IR 109")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin3);
-                        else if (charsetStr == "ISO_IR 110")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin4);
-                        else if (charsetStr == "ISO_IR 148")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin5);
-                        else if (charsetStr == "ISO_IR 144")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Cyrillic);
-                        else if (charsetStr == "ISO_IR 127")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Arabic);
-                        else if (charsetStr == "ISO_IR 126")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Greek);
-                        else if (charsetStr == "ISO_IR 138")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Hebrew);
-                        else {
+                        result = dsrdoc->setSpecificCharacterSet(defaultCharset);
+                        if (dsrdoc->getSpecificCharacterSetType() == DSRTypes::CS_unknown)
+                        {
                             OFLOG_FATAL(dsr2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": Character set '"
                                 << defaultCharset << "' specified with option --charset-assume not supported");
                             result = EC_IllegalCall;
                         }
+                        else if (result.bad())
+                        {
+                            OFLOG_FATAL(dsr2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": Cannot use character set '"
+                                << defaultCharset << "' specified with option --charset-assume: " << result.text());
+                        }
                     }
                 }
                 if (result.good())
@@ -174,7 +160,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-require",      "+Cr",    "require declaration of ext. charset (default)");
         cmd.addOption("--charset-assume",       "+Ca", 1, "[c]harset: string",
                                                           "assume charset c if no extended charset declared");
-        cmd.addOption("--charset-check-all",    "+Cc",    "check all data elements with string values\n(default: only PN, LO, LT, SH, ST and UT)");
+        cmd.addOption("--charset-check-all",    "+Cc",    "check all data elements with string values\n(default: only PN, LO, LT, SH, ST, UC and UT)");
 #ifdef WITH_LIBICONV
         cmd.addOption("--convert-to-utf8",      "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
@@ -315,6 +301,8 @@ int main(int argc, char *argv[])
             app.checkConflict("--add-schema-reference", "--template-envelope", (opt_writeFlags & DSRTypes::XF_templateElementEnclosesItems) > 0);
             app.checkConflict("--add-schema-reference", "--write-empty-tags", (opt_writeFlags & DSRTypes::XF_writeEmptyTags) > 0);
         }
+        if (opt_writeFlags & DSRTypes::XF_templateIdentifierAsAttribute)
+            app.checkDependence("--attr-template-id", "--write-template-id", (opt_writeFlags & DSRTypes::XF_writeTemplateIdentification) > 0);
         if (opt_writeFlags & DSRTypes::XF_templateElementEnclosesItems)
             app.checkDependence("--template-envelope", "--write-template-id", (opt_writeFlags & DSRTypes::XF_writeTemplateIdentification) > 0);
     }
index 357b83f0ce1c92c9c08c2ede7002dae3061c56a3..0188cc7abb3550aee039fb099b4313b9d300c9cc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -95,6 +95,9 @@ static OFCondition dumpFile(STD_NAMESPACE ostream &out,
             }
         }
     }
+#else
+    // avoid compiler warning on unused variable
+    (void)convertToUTF8;
 #endif
     if (result.good())
     {
index 46298483fb2b842ff6a4a36adbbe9f80a982a642..aee6079239efc80159b576b567e58f1b73a3700a 100644 (file)
@@ -1,10 +1,10 @@
 /*!
 
-\page mod_dcmsr dcmsr: a structured report library and utility apps
+\page mod_dcmsr dcmsr: a structured reporting library and utility apps
 
 This module contains classes to read, write, create, modify, access, print and
-render DICOM Structured Reporting documents (formerly Supplement 23). The list
-of supported SOP classes is provided in DSRTypes::E_DocumentType.
+render DICOM Structured Reporting (SR) documents. The list of supported SOP
+classes is provided in DSRTypes::E_DocumentType.
 
 The main interface classes are:
 \li \b DSRDocument
@@ -20,6 +20,13 @@ Here are some further classes that are useful when implementing SR templates:
 \li \b DSRRootTemplate
 \li \b DSRSubTemplate
 
+Currently, the following SR templates are implemented (see notes for details):
+\li \b TID1001_ObservationContext
+\li \b TID1204_LanguageOfContentItemAndDescendants
+\li \b TID1411_VolumetricROIMeasurements
+\li \b TID1500_MeasurementReport
+\li \b TID1600_ImageLibrary
+
 \section Tools
 
 This module contains the following command line tools:
@@ -52,7 +59,8 @@ if (status.good())
 \endcode
 
 The following example shows how to create a DICOM Structured Report and save
-it to a file (see \ref src_mkreport "mkreport" source file for details):
+it to a file (further details can be found in the \ref src_mkreport "mkreport"
+source file):
 
 \code
 DSRDocument document;
@@ -60,7 +68,7 @@ document.setPatientName("Doe^John");
 /* ... */
 document.getTree().addContentItem(DSRTypes::RT_isRoot, DSRTypes::VT_Container);
 document.getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue(/* some code */));
-document.getTree().addContentItem(DSRTypes::RT_hasObsContext, DSRTypes::VT_Code, DSRTypes::AM_belowCurrent);
+document.getTree().addChildContentItem(DSRTypes::RT_hasObsContext, DSRTypes::VT_Code, CODE_DCM_ObserverType);
 /* ... */
 DcmFileFormat fileformat;
 OFCondition status = document.write(*fileformat.getDataset())
@@ -77,7 +85,7 @@ Alternatively, many properties of the document tree can be accessed and
 modified directly as the following example shows:
 
 \code
-DSRDocument document(DSRTypes::DT_KeyObjectDoc);
+DSRDocument document(DSRTypes::DT_KeyObjectSelectionDocument);
 /* ... */
 document.getTree().addContentItem(DSRTypes::RT_isRoot, DSRTypes::VT_Container);
 DSRCodedEntryValue *codePtr = document.getTree().getCurrentContentItem().getConceptNamePtr();
@@ -96,6 +104,31 @@ if (imagePtr != NULL)
 /* ... */
 \endcode
 
+In addition, there are specific DSRDocumentTree::addContentItem() and
+DSRDocumentTree::addChildContentItem() methods that expect a pointer to a newly
+created DSRDocumentTreeNode instance.
+
+The final example shows how to deal with SR templates, e.g. when creating a
+DICOM Structured Report that is based on TID 1500 (Measurement Report):
+
+\code
+TID1500_MeasurementReport report(CMR_CID7021::ImagingMeasurementReport);
+report.setLanguage(CID5000_Languages::English);
+report.getObservationContext().addPersonObserver("Doe^Jane", "Some Organization");
+/* ... */
+TID1500_MeasurementReport::TID1411_Measurements &measurements = report.getVolumetricROIMeasurements();
+measurements.setActivitySession("1");
+measurements.setTrackingIdentifier("aorta reference region");
+/* ... */
+DSRDocument document;
+document.setPatientName("Last Name^First Name");
+/* ... */
+if (document.setTreeFromRootTemplate(report).good())
+  document.print(cout, DSRTypes::PF_printTemplateIdentification);
+else
+  cerr << "Error: cannot set template content as document tree" << endl;
+\endcode
+
 */
 
 /*!
index 3140f4ea7ac38c51d0562071193bcf3f44413497..bb49cfc48b11083a773cbe589b558e6a35c8f04a 100644 (file)
@@ -135,7 +135,7 @@ specific character set:
 
        --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # HTML/XHTML character encoding, but not for the conversion
@@ -253,27 +253,34 @@ The HTML/XHTML encoding is determined automatically from the DICOM attribute
 (0008,0005) "Specific Character Set" using the following mapping:
 
 \verbatim
-ASCII         (ISO_IR 6)    =>  (none)
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  (none)
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 \endverbatim
 
 If this DICOM attribute is missing in the input file, although needed, option
 \e --charset-assume can be used to specify an appropriate character set
-manually (using one of the DICOM defined terms).
+manually (using one of the DICOM defined terms).  For reasons of backward
+compatibility with previous versions of this tool, the following terms are also
+supported and mapped automatically to the associated DICOM defined terms:
+latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew.
 
-Multiple character sets are not supported (only the first attribute value is
-mapped in case of value multiplicity).  If needed, option \e --convert-to-utf8
-can be used to convert the DICOM file or data set to UTF-8 encoding prior to
-the rendering to HTML/XHTML format.
+Option \e --convert-to-utf8 can be used to convert the DICOM file or data set
+to UTF-8 encoding prior to the rendering to HTML/XHTML format.
 
 \section logging LOGGING
 
@@ -343,6 +350,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index f7cd33fa93a22ef5cd388825905105a985777a4e..c235c01e82c7519f3a3ecf9e9e851e2d2862aea3 100644 (file)
@@ -132,7 +132,7 @@ specific character set:
 
   +Cc  --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # XML character encoding, but not for the conversion to UTF-8
@@ -222,27 +222,34 @@ The XML encoding is determined automatically from the DICOM attribute
 (0008,0005) "Specific Character Set" using the following mapping:
 
 \verbatim
-ASCII         (ISO_IR 6)    =>  "UTF-8"
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  "UTF-8"
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 \endverbatim
 
 If this DICOM attribute is missing in the input file, although needed, option
 \e --charset-assume can be used to specify an appropriate character set
-manually (using one of the DICOM defined terms).
+manually (using one of the DICOM defined terms).  For reasons of backward
+compatibility with previous versions of this tool, the following terms are also
+supported and mapped automatically to the associated DICOM defined terms:
+latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew.
 
-Multiple character sets are not supported (only the first attribute value is
-mapped in case of value multiplicity).  If needed, option \e --convert-to-utf8
-can be used to convert the DICOM file or data set to UTF-8 encoding prior to
-the conversion to XML format.
+Option \e --convert-to-utf8 can be used to convert the DICOM file or data set
+to UTF-8 encoding prior to the conversion to XML format.
 
 \subsection error_handling Error Handling
 
@@ -326,6 +333,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 5eff6312b9c96c6011823b794a739baf3c3101d8..e53bda3001ef8fafcf99b95d7ec08a85444c817d 100644 (file)
@@ -212,12 +212,14 @@ Cyrillic      "ISO_IR 144"  (ISO-8859-5)
 Arabic        "ISO_IR 127"  (ISO-8859-6)
 Greek         "ISO_IR 126"  (ISO-8859-7)
 Hebrew        "ISO_IR 138"  (ISO-8859-8)
+Thai          "ISO_IR 166"  (TIS-620)
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  (ISO-2022-JP)
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  (ISO-2022-KR)
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   (ISO-2022-CN)
+Chinese       "GB18030"     (GB18030)
+Chinese       "GBK"         (GBK)
 \endverbatim
 
-Multiple character sets are not supported (only the first value of the
-"Specific Character Set" is used for the character encoding in case of value
-multiplicity).
-
 \subsection compression Compression
 
 If libxml is compiled with zlib support, the input file (\e xmlfile-in) can
@@ -303,6 +305,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2003-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2003-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 992204c2c595caa469c6caf158090c12958a9fff..29078f4c19e181664d9d98ec44b9ab8976fbef73 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID100_QuantitativeDiagnosticImagingProcedures
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:54:59 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:31 by J. Riesmeier
  *
  */
 
@@ -61,7 +61,7 @@ class DCMTK_CMR_EXPORT CID100_QuantitativeDiagnosticImagingProcedures
         /// (RPID5258,RADLEX,"NM HEAD PERFUSION BRAIN SPECT")
         NM_HEAD_PERFUSION_BRAIN_SPECT,
         /// (RPID5427,RADLEX,"NM HEAD PERFUSION BRAIN PET-CT AV-45")
-        NM_HEAD_PERFUSION_BRAIN_PET_CT_AV_45
+        NM_HEAD_PERFUSION_BRAIN_PET_CT_AV45
     };
 
     /** (default) constructor
@@ -166,4 +166,13 @@ class DCMTK_CMR_EXPORT CID100_QuantitativeDiagnosticImagingProcedures
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID100_QuantitativeDiagnosticImagingProcedures CMR_CID100;
+
+
 #endif
index ac3900970a10907c06f22f7c210c6dd87ba8588e..c0e42571bdf60f218a5b4d17ee76b4c1b097b965 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10013_CTAcquisitionType
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:27 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:55 by J. Riesmeier
  *
  */
 
@@ -152,4 +152,13 @@ class DCMTK_CMR_EXPORT CID10013_CTAcquisitionType
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10013_CTAcquisitionType CMR_CID10013;
+
+
 #endif
index c158d19ee91b7d01ef52e7ba5dd9a51794876729..5bde25a528405731a7fa5459c6af68e2b9870ad4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10013e_CTAcquisitionType
@@ -91,4 +91,13 @@ class DCMTK_CMR_EXPORT CID10013e_CTAcquisitionType
     using CID10013_CTAcquisitionType::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10013e_CTAcquisitionType CMR_CID10013e;
+
+
 #endif
index 82d66a01e487e6dc004898abab3e6ad6b05b0fad..41db6f92c0068d6ac04acc3052c50c65c6bfb48c 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10033_CTReconstructionAlgorithm
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:29 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:57 by J. Riesmeier
  *
  */
 
@@ -146,4 +146,13 @@ class DCMTK_CMR_EXPORT CID10033_CTReconstructionAlgorithm
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10033_CTReconstructionAlgorithm CMR_CID10033;
+
+
 #endif
index d1e51c57dee925c2828cb2f1f280970f3caf8329..09e1ba184e780b7124d91b107e7839039e8de4b7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10033e_CTReconstructionAlgorithm
@@ -95,4 +95,13 @@ class DCMTK_CMR_EXPORT CID10033e_CTReconstructionAlgorithm
     using CID10033_CTReconstructionAlgorithm::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10033e_CTReconstructionAlgorithm CMR_CID10033e;
+
+
 #endif
index a04af2a4899c99e8981471763286217a65f74516..79bea976a411161ca6a0fbd7e305078d40aa5038 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID11_RouteOfAdministration
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:11 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:26 by J. Riesmeier
  *
  */
 
@@ -184,4 +184,13 @@ class DCMTK_CMR_EXPORT CID11_RouteOfAdministration
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID11_RouteOfAdministration CMR_CID11;
+
+
 #endif
index 9c8e8993e73549ec05ebdfdc1fbb9790e4e60250..d09c4b936f5504a2004c17054b49ccfb1104bca0 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID244_Laterality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:16 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:33 by J. Riesmeier
  *
  */
 
@@ -150,4 +150,13 @@ class DCMTK_CMR_EXPORT CID244_Laterality
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID244_Laterality CMR_CID244;
+
+
 #endif
index 98d502bff07d34d40ae807c87f2fc1d6facc78e7..951ec3d8235998fdc48891728ffe784324e097b3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID244e_Laterality
@@ -91,4 +91,13 @@ class DCMTK_CMR_EXPORT CID244e_Laterality
     using CID244_Laterality::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID244e_Laterality CMR_CID244e;
+
+
 #endif
index 2de9bd68cf72b0f9e07ba7eb36322d922a38716f..537e277f3cb45742b28b8b5c4ac2f56d2229c6e9 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID29_AcquisitionModality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:13 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:28 by J. Riesmeier
  *
  */
 
@@ -216,4 +216,13 @@ class DCMTK_CMR_EXPORT CID29_AcquisitionModality
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID29_AcquisitionModality CMR_CID29;
+
+
 #endif
index 720657015e47c48d47dd87245dcf2e5234b8e341..c7ee85498a29f268061a6f69f0bb6dc0f3c81286 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID29e_AcquisitionModality
@@ -82,4 +82,13 @@ class DCMTK_CMR_EXPORT CID29e_AcquisitionModality
     using CID29_AcquisitionModality::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID29e_AcquisitionModality CMR_CID29e;
+
+
 #endif
index 45620c35c5e97efe0a5697dad82f8fe0db5e0785..8dbe7713593b383316934a9a9d34a445e28df104 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4020_PETRadionuclide
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:18 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:35 by J. Riesmeier
  *
  */
 
@@ -212,4 +212,13 @@ class DCMTK_CMR_EXPORT CID4020_PETRadionuclide
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4020_PETRadionuclide CMR_CID4020;
+
+
 #endif
index bc8c0214dd2039a1b4a50f232cef57aacbc7f60e..5fe89946e5bf829b580b856815463084c2cdd7db 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4021_PETRadiopharmaceutical
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:19 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:36 by J. Riesmeier
  *
  */
 
@@ -294,4 +294,13 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4021_PETRadiopharmaceutical CMR_CID4021;
+
+
 #endif
index 422736bf650633fedbf226800b32a1b08d450ad0..37711002f69699a6757395ed37444ed22ac51472 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4031_CommonAnatomicRegions
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:21 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:38 by J. Riesmeier
  *
  */
 
@@ -356,4 +356,13 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegions
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4031_CommonAnatomicRegions CMR_CID4031;
+
+
 #endif
index 1dd0a9d2b1b3ff4f6d5492951067f822c159ad20..0ccd6ef665d4d90dd3261d74ee738a5562cf1a91 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4031_CommonAnatomicRegions_Enhanced
@@ -95,4 +95,13 @@ class DCMTK_CMR_EXPORT CID4031e_CommonAnatomicRegions
     using CID4031_CommonAnatomicRegions::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4031e_CommonAnatomicRegions CMR_CID4031e;
+
+
 #endif
index b0921ce0ac2606d0f3bc8aeda10bc861e4940fb1..f04d97cfbaa4a64067e5dff8a9177bdccf03a8ef 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID42_NumericValueQualifier
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:14 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:30 by J. Riesmeier
  *
  */
 
@@ -166,4 +166,13 @@ class DCMTK_CMR_EXPORT CID42_NumericValueQualifier
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID42_NumericValueQualifier CMR_CID42;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
new file mode 100644 (file)
index 0000000..8408a3b
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CID6147_ResponseCriteria
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-16 12:26:40 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CMR_CID6147_H
+#define CMR_CID6147_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrctxgr.h"
+#include "dcmtk/dcmsr/cmr/define.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Context Group:
+ *  CID 6147 - Response Criteria.
+ *  (type: extensible, version: 20141110)
+ */
+class DCMTK_CMR_EXPORT CID6147_ResponseCriteria
+  : public DSRContextGroup
+{
+
+  public:
+
+    /** types of response criteria
+     */
+    enum EnumType
+    {
+        /// (112029,DCM,"WHO")
+        WHO,
+        /// (126080,DCM,"RECIST 1.0")
+        RECIST10,
+        /// (126081,DCM,"RECIST 1.1")
+        RECIST11,
+        /// (C114879,NCIt,"RANO")
+        RANO
+    };
+
+    /** (default) constructor
+     ** @param  selectedValue  coded entry to be selected as the current value (optional).
+     *                         Should be a valid code according to the DICOM definitions
+     *                         for this context group, i.e. no checks are performed.
+     *                         Call DSRContextGroup::checkSelectedValue() if needed.
+     */
+    CID6147_ResponseCriteria(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+
+    /** constructor
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     */
+    CID6147_ResponseCriteria(const EnumType selectedValue,
+                             const OFBool enhancedEncodingMode = OFFalse);
+
+    /** select a coded entry given by its type as the current value
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition selectValue(const EnumType selectedValue,
+                                    const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- static helper functions ---
+
+    /** initialize this context group explicitly.  Internally, the list of standard coded
+     *  entries is created and initialized by calling getCodes().
+     ** @note This function can be called multiple times but in case of multi-threaded
+     *        applications should be called at least once before any instance of this class
+     *        is actually used.  For single-threaded applications, there is no need to call
+     *        it since the initialization is done implicitly.
+     */
+    static void initialize();
+
+    /** cleanup this context group, i.e.\ delete the internal list of standard coded entries.
+     *  Usually, there is no need to call this method, but it might be useful in order to
+     *  explicitly free the associated memory, e.g. when checking for memory leaks.  The list
+     *  will be recreated automatically when needed (or when initialize() is called).
+     */
+    static void cleanup();
+
+    /** map a given type to the associated coded entry
+     ** @param  value                 type that should be mapped to a coded entry
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return coded entry that is associated with the given type
+     */
+    static DSRCodedEntryValue getCodedEntry(const EnumType value,
+                                            const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- reintroduce methods from base class
+
+     using DSRContextGroup::selectValue;
+     using DSRContextGroup::findCodedEntry;
+
+
+  protected:
+
+    /// type used for storing and managing the coded entries
+    typedef OFMap<EnumType, DSRBasicCodedEntry> CodeList;
+
+    /** print details on coded entries that are contained in this context group.
+     *  See DSRCodedEntryValue::print() for details of the coded entry output.
+     ** @param  stream  stream to which the output should be printed
+     */
+    virtual void printCodes(STD_NAMESPACE ostream &stream) const;
+
+    /** search for a given coded entry in this context group
+     ** @param  searchForCodedEntry   coded entry to be searched for
+     *  @param  foundCodedEntry       pointer to variable that will store the coded entry
+     *                                (if found and pointer is not NULL)
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return result of the search process, also defines the type of the entry
+     */
+    virtual OFCondition findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                       DSRCodedEntryValue *foundCodedEntry,
+                                       const OFBool enhancedEncodingMode = OFFalse) const;
+
+  // --- static helper function ---
+
+    /** get list of standard coded entries that are managed by this context group.
+     *  Internally, the singleton pattern is used, so the list is initialized only once.
+     *  Please note that this function is not thread-safe.  Therefore, the initialize()
+     *  function can be called before any instance of this class is actually used.
+     ** @return reference to list of coded entries managed by this context group
+     */
+    static CodeList &getCodes();
+
+    /** set the "Enhanced Encoding Mode" for a given coded entry
+     ** @param  codedEntryValue  coded entry for which the enhanced encoding mode is set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    static OFCondition setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue);
+
+
+  private:
+
+    /// pointer to internal code list (use a static variable for singleton pattern)
+    static CodeList *Codes;
+};
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID6147_ResponseCriteria CMR_CID6147;
+
+
+#endif
index 89ccabb2316ef0e629e8bd005c4f2b037750a600..588b500b98a4a3e2b61eea47a356949eca8cbf8c 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7021_MeasurementReportDocumentTitles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:55:09 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:42 by J. Riesmeier
  *
  */
 
@@ -150,4 +150,13 @@ class DCMTK_CMR_EXPORT CID7021_MeasurementReportDocumentTitles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7021_MeasurementReportDocumentTitles CMR_CID7021;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
new file mode 100644 (file)
index 0000000..1301522
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CID7181_AbstractMultiDimensionalImageModelComponentUnits
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-16 12:26:44 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CMR_CID7181_H
+#define CMR_CID7181_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrctxgr.h"
+#include "dcmtk/dcmsr/cmr/define.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Context Group:
+ *  CID 7181 - Abstract Multi-dimensional Image Model Component Units.
+ *  (type: extensible, version: 20141110)
+ */
+class DCMTK_CMR_EXPORT CID7181_AbstractMultiDimensionalImageModelComponentUnits
+  : public DSRContextGroup
+{
+
+  public:
+
+    /** types of abstract multi-dimensional image model component units
+     */
+    enum EnumType
+    {
+        /// (mm[Hg],UCUM,"mmHg"), included from CID 3500
+        MmHg,
+        /// (kPa,UCUM,"kPa"), included from CID 3500
+        KPa,
+        /// ([PRU],UCUM,"P.R.U."), included from CID 3502
+        PRU,
+        /// ([wood'U],UCUM,"Wood U"), included from CID 3502
+        WoodU,
+        /// (dyn.s.cm-5,UCUM,"dyn.s.cm-5"), included from CID 3502
+        Dynscm5,
+        /// ([PRU]/m2,UCUM,"P.R.U./m2"), included from CID 3503
+        PRUPerM2,
+        /// ([wood'U]/m2,UCUM,"Wood U/m2"), included from CID 3503
+        WoodUPerM2,
+        /// (dyn.s.cm-5/m2,UCUM,"dyn.s.cm-5/m2"), included from CID 3503
+        Dynscm5PerM2,
+        /// (cm,UCUM,"centimeter"), included from CID 7460
+        Centimeter,
+        /// (mm,UCUM,"millimeter"), included from CID 7460
+        Millimeter,
+        /// (um,UCUM,"micrometer"), included from CID 7460
+        Micrometer,
+        /// (cm2,UCUM,"square centimeter"), included from CID 7461
+        SquareCentimeter,
+        /// (mm2,UCUM,"square millimeter"), included from CID 7461
+        SquareMillimeter,
+        /// (um2,UCUM,"square micrometer"), included from CID 7461
+        SquareMicrometer,
+        /// (dm3,UCUM,"cubic decimeter"), included from CID 7462
+        CubicDecimeter,
+        /// (cm3,UCUM,"cubic centimeter"), included from CID 7462
+        CubicCentimeter,
+        /// (mm3,UCUM,"cubic millimeter"), included from CID 7462
+        CubicMillimeter,
+        /// (um3,UCUM,"cubic micrometer"), included from CID 7462
+        CubicMicrometer,
+        /// ({SUVbw}g/ml,UCUM,"Standardized Uptake Value body weight"), included from CID 85
+        StandardizedUptakeValueBodyWeight,
+        /// ({SUVlbm}g/ml,UCUM,"Standardized Uptake Value lean body mass"), included from CID 85
+        StandardizedUptakeValueLeanBodyMass,
+        /// ({SUVbsa}cm2/ml,UCUM,"Standardized Uptake Value body surface area"), included from CID 85
+        StandardizedUptakeValueBodySurfaceArea,
+        /// ({SUVibw}g/ml,UCUM,"Standardized Uptake Value ideal body weight"), included from CID 85
+        StandardizedUptakeValueIdealBodyWeight,
+        /// ({counts},UCUM,"Counts"), included from CID 84
+        Counts,
+        /// ({counts}/s,UCUM,"Counts per second"), included from CID 84
+        CountsPerSecond,
+        /// ({propcounts},UCUM,"Proportional to counts"), included from CID 84
+        ProportionalToCounts,
+        /// ({propcounts}/s,UCUM,"Proportional to counts per second"), included from CID 84
+        ProportionalToCountsPerSecond,
+        /// (%,UCUM,"Percent"), included from CID 84
+        Percent,
+        /// (Bq/ml,UCUM,"Becquerels/milliliter"), included from CID 84
+        BecquerelsPerMilliliter,
+        /// (mg/min/ml,UCUM,"Milligrams/minute/milliliter"), included from CID 84
+        MilligramsPerMinutePerMilliliter,
+        /// (umol/min/ml,UCUM,"Micromole/minute/milliliter"), included from CID 84
+        MicromolePerMinutePerMilliliter,
+        /// (ml/min/g,UCUM,"Milliliter/minute/gram"), included from CID 84
+        MilliliterPerMinutePerGram,
+        /// (ml/g,UCUM,"Milliliter/gram"), included from CID 84
+        MilliliterPerGram,
+        /// (/cm,UCUM,"/Centimeter"), included from CID 84
+        PerCentimeter,
+        /// (umol/ml,UCUM,"Micromole/milliliter"), included from CID 84
+        MicromolePerMilliliter,
+        /// (1,UCUM,"no units")
+        NoUnits,
+        /// ({ratio},UCUM,"ratio")
+        Ratio,
+        /// ([hnsf'U],UCUM,"Hounsfield Unit")
+        HounsfieldUnit,
+        /// ([arb'U],UCUM,"arbitrary unit")
+        ArbitraryUnit,
+        /// (cm/s,UCUM,"centimeter/second")
+        CentimeterPerSecond,
+        /// (mm/s,UCUM,"millimeter/second")
+        MillimeterPerSecond,
+        /// (dB,UCUM,"decibel")
+        Decibel,
+        /// (Cel,UCUM,"degrees Celsius")
+        DegreesCelsius,
+        /// (ml/min,UCUM,"milliliter per minute")
+        MilliliterPerMinute,
+        /// (ml/s,UCUM,"milliliter per second")
+        MilliliterPerSecond,
+        /// (ms,UCUM,"millisecond")
+        Millisecond,
+        /// (s,UCUM,"second")
+        Second,
+        /// (Hz,UCUM,"Hertz")
+        Hertz,
+        /// (mT,UCUM,"milliTesla")
+        MilliTesla,
+        /// ({Particles}/[100]g{Tissue},UCUM,"number particles per 100 gram of tissue")
+        NumberParticlesPer100GramOfTissue,
+        /// (mm2/s,UCUM,"square millimeter per second")
+        SquareMillimeterPerSecond,
+        /// (s/mm2,UCUM,"second per square millimeter")
+        SecondPerSquareMillimeter,
+        /// (ml/[100]g/min,UCUM,"milliliter per 100 gram per minute")
+        MilliliterPer100GramPerMinute,
+        /// (ml/[100]ml,UCUM,"milliliter per 100 milliliter")
+        MilliliterPer100Milliliter,
+        /// (mmol/kg{WetWeight},UCUM,"millimoles per kg wet weight")
+        MillimolesPerKgWetWeight,
+        /// (/min,UCUM,"/min")
+        PerMin,
+        /// (/s,UCUM,"/s")
+        PerS
+    };
+
+    /** (default) constructor
+     ** @param  selectedValue  coded entry to be selected as the current value (optional).
+     *                         Should be a valid code according to the DICOM definitions
+     *                         for this context group, i.e. no checks are performed.
+     *                         Call DSRContextGroup::checkSelectedValue() if needed.
+     */
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+
+    /** constructor
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     */
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits(const EnumType selectedValue,
+                                                             const OFBool enhancedEncodingMode = OFFalse);
+
+    /** select a coded entry given by its type as the current value
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition selectValue(const EnumType selectedValue,
+                                    const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- static helper functions ---
+
+    /** initialize this context group explicitly.  Internally, the list of standard coded
+     *  entries is created and initialized by calling getCodes().
+     ** @note This function can be called multiple times but in case of multi-threaded
+     *        applications should be called at least once before any instance of this class
+     *        is actually used.  For single-threaded applications, there is no need to call
+     *        it since the initialization is done implicitly.
+     */
+    static void initialize();
+
+    /** cleanup this context group, i.e.\ delete the internal list of standard coded entries.
+     *  Usually, there is no need to call this method, but it might be useful in order to
+     *  explicitly free the associated memory, e.g. when checking for memory leaks.  The list
+     *  will be recreated automatically when needed (or when initialize() is called).
+     */
+    static void cleanup();
+
+    /** map a given type to the associated coded entry
+     ** @param  value                 type that should be mapped to a coded entry
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return coded entry that is associated with the given type
+     */
+    static DSRCodedEntryValue getCodedEntry(const EnumType value,
+                                            const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- reintroduce methods from base class
+
+     using DSRContextGroup::selectValue;
+     using DSRContextGroup::findCodedEntry;
+
+
+  protected:
+
+    /// type used for storing and managing the coded entries
+    typedef OFMap<EnumType, DSRBasicCodedEntry> CodeList;
+
+    /** print details on coded entries that are contained in this context group.
+     *  See DSRCodedEntryValue::print() for details of the coded entry output.
+     ** @param  stream  stream to which the output should be printed
+     */
+    virtual void printCodes(STD_NAMESPACE ostream &stream) const;
+
+    /** search for a given coded entry in this context group
+     ** @param  searchForCodedEntry   coded entry to be searched for
+     *  @param  foundCodedEntry       pointer to variable that will store the coded entry
+     *                                (if found and pointer is not NULL)
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return result of the search process, also defines the type of the entry
+     */
+    virtual OFCondition findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                       DSRCodedEntryValue *foundCodedEntry,
+                                       const OFBool enhancedEncodingMode = OFFalse) const;
+
+  // --- static helper function ---
+
+    /** get list of standard coded entries that are managed by this context group.
+     *  Internally, the singleton pattern is used, so the list is initialized only once.
+     *  Please note that this function is not thread-safe.  Therefore, the initialize()
+     *  function can be called before any instance of this class is actually used.
+     ** @return reference to list of coded entries managed by this context group
+     */
+    static CodeList &getCodes();
+
+    /** set the "Enhanced Encoding Mode" for a given coded entry
+     ** @param  codedEntryValue  coded entry for which the enhanced encoding mode is set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    static OFCondition setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue);
+
+
+  private:
+
+    /// pointer to internal code list (use a static variable for singleton pattern)
+    static CodeList *Codes;
+};
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7181_AbstractMultiDimensionalImageModelComponentUnits CMR_CID7181;
+
+
+#endif
index 10cad1d1d0fe0a51c1b9e1a76575dc30715fb680..9af4e7fb563ae9dbd6311aef3d423263e87a0825 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7445_DeviceParticipatingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:23 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:46 by J. Riesmeier
  *
  */
 
@@ -148,4 +148,13 @@ class DCMTK_CMR_EXPORT CID7445_DeviceParticipatingRoles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7445_DeviceParticipatingRoles CMR_CID7445;
+
+
 #endif
index c01e5754efe62452a44c71277626e88dcce8e7ca..3e598dcf7b9cf7b0d3fa076274ff26a98182b419 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7452_OrganizationalRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:24 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:48 by J. Riesmeier
  *
  */
 
@@ -178,4 +178,13 @@ class DCMTK_CMR_EXPORT CID7452_OrganizationalRoles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7452_OrganizationalRoles CMR_CID7452;
+
+
 #endif
index 8c632d70e13fe2e45bd70579340de0b213d1a886..153fd57627f473da7f6136ece5a57cb22731c3cc 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7453_PerformingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:26 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:49 by J. Riesmeier
  *
  */
 
@@ -162,4 +162,13 @@ class DCMTK_CMR_EXPORT CID7453_PerformingRoles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7453_PerformingRoles CMR_CID7453;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
new file mode 100644 (file)
index 0000000..eec5b62
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CID7464_GeneralRegionOfInterestMeasurementModifiers
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-16 12:26:51 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CMR_CID7464_H
+#define CMR_CID7464_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrctxgr.h"
+#include "dcmtk/dcmsr/cmr/define.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Context Group:
+ *  CID 7464 - General Region of Interest Measurement Modifiers.
+ *  (type: extensible, version: 20121101)
+ */
+class DCMTK_CMR_EXPORT CID7464_GeneralRegionOfInterestMeasurementModifiers
+  : public DSRContextGroup
+{
+
+  public:
+
+    /** types of general region of interest measurement modifiers
+     */
+    enum EnumType
+    {
+        /// (G-A437,SRT,"Maximum"), included from CID 3488
+        Maximum,
+        /// (R-404FB,SRT,"Minimum"), included from CID 3488
+        Minimum,
+        /// (R-00317,SRT,"Mean"), included from CID 3488
+        Mean,
+        /// (R-10047,SRT,"Standard Deviation")
+        StandardDeviation,
+        /// (R-40507,SRT,"Total")
+        Total,
+        /// (R-00319,SRT,"Median")
+        Median,
+        /// (R-0032E,SRT,"Mode")
+        Mode,
+        /// (126031,DCM,"Peak Value Within ROI")
+        PeakValueWithinROI,
+        /// (C0681921,UMLS,"Coefficient of Variance")
+        CoefficientOfVariance,
+        /// (126051,DCM,"Skewness")
+        Skewness,
+        /// (126052,DCM,"Kurtosis")
+        Kurtosis,
+        /// (C1711260,UMLS,"Variance")
+        Variance,
+        /// (C2347976,UMLS,"Root Mean Square")
+        RootMeanSquare
+    };
+
+    /** (default) constructor
+     ** @param  selectedValue  coded entry to be selected as the current value (optional).
+     *                         Should be a valid code according to the DICOM definitions
+     *                         for this context group, i.e. no checks are performed.
+     *                         Call DSRContextGroup::checkSelectedValue() if needed.
+     */
+    CID7464_GeneralRegionOfInterestMeasurementModifiers(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+
+    /** constructor
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     */
+    CID7464_GeneralRegionOfInterestMeasurementModifiers(const EnumType selectedValue,
+                                                        const OFBool enhancedEncodingMode = OFFalse);
+
+    /** select a coded entry given by its type as the current value
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition selectValue(const EnumType selectedValue,
+                                    const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- static helper functions ---
+
+    /** initialize this context group explicitly.  Internally, the list of standard coded
+     *  entries is created and initialized by calling getCodes().
+     ** @note This function can be called multiple times but in case of multi-threaded
+     *        applications should be called at least once before any instance of this class
+     *        is actually used.  For single-threaded applications, there is no need to call
+     *        it since the initialization is done implicitly.
+     */
+    static void initialize();
+
+    /** cleanup this context group, i.e.\ delete the internal list of standard coded entries.
+     *  Usually, there is no need to call this method, but it might be useful in order to
+     *  explicitly free the associated memory, e.g. when checking for memory leaks.  The list
+     *  will be recreated automatically when needed (or when initialize() is called).
+     */
+    static void cleanup();
+
+    /** map a given type to the associated coded entry
+     ** @param  value                 type that should be mapped to a coded entry
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return coded entry that is associated with the given type
+     */
+    static DSRCodedEntryValue getCodedEntry(const EnumType value,
+                                            const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- reintroduce methods from base class
+
+     using DSRContextGroup::selectValue;
+     using DSRContextGroup::findCodedEntry;
+
+
+  protected:
+
+    /// type used for storing and managing the coded entries
+    typedef OFMap<EnumType, DSRBasicCodedEntry> CodeList;
+
+    /** print details on coded entries that are contained in this context group.
+     *  See DSRCodedEntryValue::print() for details of the coded entry output.
+     ** @param  stream  stream to which the output should be printed
+     */
+    virtual void printCodes(STD_NAMESPACE ostream &stream) const;
+
+    /** search for a given coded entry in this context group
+     ** @param  searchForCodedEntry   coded entry to be searched for
+     *  @param  foundCodedEntry       pointer to variable that will store the coded entry
+     *                                (if found and pointer is not NULL)
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return result of the search process, also defines the type of the entry
+     */
+    virtual OFCondition findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                       DSRCodedEntryValue *foundCodedEntry,
+                                       const OFBool enhancedEncodingMode = OFFalse) const;
+
+  // --- static helper function ---
+
+    /** get list of standard coded entries that are managed by this context group.
+     *  Internally, the singleton pattern is used, so the list is initialized only once.
+     *  Please note that this function is not thread-safe.  Therefore, the initialize()
+     *  function can be called before any instance of this class is actually used.
+     ** @return reference to list of coded entries managed by this context group
+     */
+    static CodeList &getCodes();
+
+    /** set the "Enhanced Encoding Mode" for a given coded entry
+     ** @param  codedEntryValue  coded entry for which the enhanced encoding mode is set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    static OFCondition setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue);
+
+
+  private:
+
+    /// pointer to internal code list (use a static variable for singleton pattern)
+    static CodeList *Codes;
+};
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7464_GeneralRegionOfInterestMeasurementModifiers CMR_CID7464;
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
new file mode 100644 (file)
index 0000000..20f7803
--- /dev/null
@@ -0,0 +1,434 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CID7469_GenericIntensityAndSizeMeasurements
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-16 12:26:53 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CMR_CID7469_H
+#define CMR_CID7469_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrctxgr.h"
+#include "dcmtk/dcmsr/cmr/define.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Context Group:
+ *  CID 7469 - Generic Intensity and Size Measurements.
+ *  (type: extensible, version: 20141110)
+ */
+class DCMTK_CMR_EXPORT CID7469_GenericIntensityAndSizeMeasurements
+  : public DSRContextGroup
+{
+
+  public:
+
+    /** types of generic intensity and size measurements
+     */
+    enum EnumType
+    {
+        /// (F-6175A,SRT,"N-acetylaspartate"), included from CID 4033
+        NAcetylaspartate,
+        /// (F-61080,SRT,"Citrate"), included from CID 4033
+        Citrate,
+        /// (F-61620,SRT,"Choline"), included from CID 4033
+        Choline,
+        /// (F-61380,SRT,"Creatine"), included from CID 4033
+        Creatine,
+        /// (113094,DCM,"Creatine and Choline"), included from CID 4033
+        CreatineAndCholine,
+        /// (F-61760,SRT,"Lactate"), included from CID 4033
+        Lactate,
+        /// (F-63600,SRT,"Lipid"), included from CID 4033
+        Lipid,
+        /// (113095,DCM,"Lipid and Lactate"), included from CID 4033
+        LipidAndLactate,
+        /// (113080,DCM,"Glutamate and glutamine"), included from CID 4033
+        GlutamateAndGlutamine,
+        /// (F-64210,SRT,"Glutamine"), included from CID 4033
+        Glutamine,
+        /// (F-64460,SRT,"Tuarine"), included from CID 4033
+        Tuarine,
+        /// (F-61A90,SRT,"Inositol"), included from CID 4033
+        Inositol,
+        /// (113081,DCM,"Choline/Creatine Ratio"), included from CID 4033
+        CholinePerCreatineRatio,
+        /// (113082,DCM,"N-acetylaspartate/Creatine Ratio"), included from CID 4033
+        NAcetylaspartatePerCreatineRatio,
+        /// (113083,DCM,"N-acetylaspartate/Choline Ratio"), included from CID 4033
+        NAcetylaspartatePerCholineRatio,
+        /// (113096,DCM,"Creatine+Choline/Citrate Ratio"), included from CID 4033
+        CreatinePlusCholinePerCitrateRatio,
+        /// (113063,DCM,"T1"), included from CID 7180
+        T1,
+        /// (113065,DCM,"T2"), included from CID 7180
+        T2,
+        /// (113064,DCM,"T2*"), included from CID 7180
+        T2Star,
+        /// (113058,DCM,"Proton Density"), included from CID 7180
+        ProtonDensity,
+        /// (110800,DCM,"Spin Tagging Perfusion MR Signal Intensity"), included from CID 7180
+        SpinTaggingPerfusionMRSignalIntensity,
+        /// (113070,DCM,"Velocity encoded"), included from CID 7180
+        VelocityEncoded,
+        /// (113067,DCM,"Temperature encoded"), included from CID 7180
+        TemperatureEncoded,
+        /// (110801,DCM,"Contrast Agent Angio MR Signal Intensity"), included from CID 7180
+        ContrastAgentAngioMRSignalIntensity,
+        /// (110802,DCM,"Time Of Flight Angio MR Signal Intensity"), included from CID 7180
+        TimeOfFlightAngioMRSignalIntensity,
+        /// (110803,DCM,"Proton Density Weighted MR Signal Intensity"), included from CID 7180
+        ProtonDensityWeightedMRSignalIntensity,
+        /// (110804,DCM,"T1 Weighted MR Signal Intensity"), included from CID 7180
+        T1WeightedMRSignalIntensity,
+        /// (110805,DCM,"T2 Weighted MR Signal Intensity"), included from CID 7180
+        T2WeightedMRSignalIntensity,
+        /// (110806,DCM,"T2* Weighted MR Signal Intensity"), included from CID 7180
+        T2StarWeightedMRSignalIntensity,
+        /// (113043,DCM,"Diffusion weighted"), included from CID 7180
+        DiffusionWeighted,
+        /// (110807,DCM,"Field Map MR Signal Intensity"), included from CID 7180
+        FieldMapMRSignalIntensity,
+        /// (110808,DCM,"Fractional Anisotropy"), included from CID 7180
+        FractionalAnisotropy,
+        /// (110809,DCM,"Relative Anisotropy"), included from CID 7180
+        RelativeAnisotropy,
+        /// (113041,DCM,"Apparent Diffusion Coefficient"), included from CID 7180
+        ApparentDiffusionCoefficient,
+        /// (110810,DCM,"Volumetric Diffusion Dxx Component"), included from CID 7180
+        VolumetricDiffusionDxxComponent,
+        /// (110811,DCM,"Volumetric Diffusion Dxy Component"), included from CID 7180
+        VolumetricDiffusionDxyComponent,
+        /// (110812,DCM,"Volumetric Diffusion Dxz Component"), included from CID 7180
+        VolumetricDiffusionDxzComponent,
+        /// (110813,DCM,"Volumetric Diffusion Dyy Component"), included from CID 7180
+        VolumetricDiffusionDyyComponent,
+        /// (110814,DCM,"Volumetric Diffusion Dyz Component"), included from CID 7180
+        VolumetricDiffusionDyzComponent,
+        /// (110815,DCM,"Volumetric Diffusion Dzz Component"), included from CID 7180
+        VolumetricDiffusionDzzComponent,
+        /// (110816,DCM,"T1 Weighted Dynamic Contrast Enhanced MR Signal Intensity"), included from CID 7180
+        T1WeightedDynamicContrastEnhancedMRSignalIntensity,
+        /// (110817,DCM,"T2 Weighted Dynamic Contrast Enhanced MR Signal Intensity"), included from CID 7180
+        T2WeightedDynamicContrastEnhancedMRSignalIntensity,
+        /// (110818,DCM,"T2* Weighted Dynamic Contrast Enhanced MR Signal Intensity"), included from CID 7180
+        T2StarWeightedDynamicContrastEnhancedMRSignalIntensity,
+        /// (110819,DCM,"Blood Oxygenation Level"), included from CID 7180
+        BloodOxygenationLevel,
+        /// (110820,DCM,"Nuclear Medicine Projection Activity"), included from CID 7180
+        NuclearMedicineProjectionActivity,
+        /// (110821,DCM,"Nuclear Medicine Tomographic Activity"), included from CID 7180
+        NuclearMedicineTomographicActivity,
+        /// (110822,DCM,"Spatial Displacement X Component"), included from CID 7180
+        SpatialDisplacementXComponent,
+        /// (110823,DCM,"Spatial Displacement Y Component"), included from CID 7180
+        SpatialDisplacementYComponent,
+        /// (110824,DCM,"Spatial Displacement Z Component"), included from CID 7180
+        SpatialDisplacementZComponent,
+        /// (110825,DCM,"Hemodynamic Resistance"), included from CID 7180
+        HemodynamicResistance,
+        /// (110826,DCM,"Indexed Hemodynamic Resistance"), included from CID 7180
+        IndexedHemodynamicResistance,
+        /// (112031,DCM,"Attenuation Coefficient"), included from CID 7180
+        AttenuationCoefficient,
+        /// (110827,DCM,"Tissue Velocity"), included from CID 7180
+        TissueVelocity,
+        /// (110828,DCM,"Flow Velocity"), included from CID 7180
+        FlowVelocity,
+        /// (P0-02241,SRT,"Power Doppler"), included from CID 7180
+        PowerDoppler,
+        /// (110829,DCM,"Flow Variance"), included from CID 7180
+        FlowVariance,
+        /// (110830,DCM,"Elasticity"), included from CID 7180
+        Elasticity,
+        /// (110831,DCM,"Perfusion"), included from CID 7180
+        Perfusion,
+        /// (110832,DCM,"Speed of sound"), included from CID 7180
+        SpeedOfSound,
+        /// (110833,DCM,"Ultrasound Attenuation"), included from CID 7180
+        UltrasoundAttenuation,
+        /// (113068,DCM,"Student's T-test"), included from CID 7180
+        StudentsTTest,
+        /// (113071,DCM,"Z-score"), included from CID 7180
+        ZScore,
+        /// (113057,DCM,"R-Coefficient"), included from CID 7180
+        RCoefficient,
+        /// (126220,DCM,"R2-Coefficient"), included from CID 7180
+        R2Coefficient,
+        /// (110834,DCM,"RGB R Component"), included from CID 7180
+        RGBRComponent,
+        /// (110835,DCM,"RGB G Component"), included from CID 7180
+        RGBGComponent,
+        /// (110836,DCM,"RGB B Component"), included from CID 7180
+        RGBBComponent,
+        /// (110837,DCM,"YBR FULL Y Component"), included from CID 7180
+        YBR_FULLYComponent,
+        /// (110838,DCM,"YBR FULL CB Component"), included from CID 7180
+        YBR_FULL_CBComponent,
+        /// (110839,DCM,"YBR FULL CR Component"), included from CID 7180
+        YBR_FULL_CRComponent,
+        /// (110840,DCM,"YBR PARTIAL Y Component"), included from CID 7180
+        YBR_PARTIALYComponent,
+        /// (110841,DCM,"YBR PARTIAL CB Component"), included from CID 7180
+        YBR_PARTIAL_CBComponent,
+        /// (110842,DCM,"YBR PARTIAL CR Component"), included from CID 7180
+        YBR_PARTIAL_CRComponent,
+        /// (110843,DCM,"YBR ICT Y Component"), included from CID 7180
+        YBR_ICTYComponent,
+        /// (110844,DCM,"YBR ICT CB Component"), included from CID 7180
+        YBR_ICT_CBComponent,
+        /// (110845,DCM,"YBR ICT CR Component"), included from CID 7180
+        YBR_ICT_CRComponent,
+        /// (110846,DCM,"YBR RCT Y Component"), included from CID 7180
+        YBR_RCTYComponent,
+        /// (110847,DCM,"YBR RCT CB Component"), included from CID 7180
+        YBR_RCT_CBComponent,
+        /// (110848,DCM,"YBR RCT CR Component"), included from CID 7180
+        YBR_RCT_CRComponent,
+        /// (110849,DCM,"Echogenicity"), included from CID 7180
+        Echogenicity,
+        /// (110850,DCM,"X-Ray Attenuation"), included from CID 7180
+        XRayAttenuation,
+        /// (110852,DCM,"MR signal intensity"), included from CID 7180
+        MRSignalIntensity,
+        /// (110853,DCM,"Binary Segmentation"), included from CID 7180
+        BinarySegmentation,
+        /// (110854,DCM,"Fractional Probabilistic Segmentation"), included from CID 7180
+        FractionalProbabilisticSegmentation,
+        /// (110855,DCM,"Fractional Occupancy Segmentation"), included from CID 7180
+        FractionalOccupancySegmentation,
+        /// (126393,DCM,"R1"), included from CID 7180
+        R1,
+        /// (126394,DCM,"R2"), included from CID 7180
+        R2,
+        /// (126312,DCM,"Ktrans"), included from CID 4107
+        Ktrans,
+        /// (126313,DCM,"kep"), included from CID 4107
+        Kep,
+        /// (126314,DCM,"ve"), included from CID 4107
+        Ve,
+        /// (126330,DCM,"tau_m"), included from CID 4107
+        Tau_m,
+        /// (126331,DCM,"vp"), included from CID 4107
+        Vp,
+        /// (113055,DCM,"Regional Cerebral Blood Flow"), included from CID 4108
+        RegionalCerebralBloodFlow,
+        /// (126390,DCM,"Regional Blood Flow"), included from CID 4108
+        RegionalBloodFlow,
+        /// (113056,DCM,"Regional Cerebral Blood Volume"), included from CID 4108
+        RegionalCerebralBloodVolume,
+        /// (126391,DCM,"Regional Blood Volume"), included from CID 4108
+        RegionalBloodVolume,
+        /// (113052,DCM,"Mean Transit Time"), included from CID 4108
+        MeanTransitTime,
+        /// (113069,DCM,"Time To Peak"), included from CID 4108
+        TimeToPeak,
+        /// (126392,DCM,"Oxygen Extraction Fraction"), included from CID 4108
+        OxygenExtractionFraction,
+        /// (126320,DCM,"IAUC"), included from CID 4109
+        IAUC,
+        /// (126321,DCM,"IAUC60"), included from CID 4109
+        IAUC60,
+        /// (126322,DCM,"IAUC90"), included from CID 4109
+        IAUC90,
+        /// (126370,DCM,"Time of Peak Concentration"), included from CID 4109
+        TimeOfPeakConcentration,
+        /// (126372,DCM,"Time of Leading Half-Peak Concentration"), included from CID 4109
+        TimeOfLeadingHalfPeakConcentration,
+        /// (126371,DCM,"Bolus Arrival Time"), included from CID 4109
+        BolusArrivalTime,
+        /// (126374,DCM,"Temporal Derivative Threshold"), included from CID 4109
+        TemporalDerivativeThreshold,
+        /// (126375,DCM,"Maximum Slope"), included from CID 4109
+        MaximumSlope,
+        /// (126376,DCM,"Maximum Difference"), included from CID 4109
+        MaximumDifference,
+        /// (126377,DCM,"Tracer Concentration"), included from CID 4109
+        TracerConcentration,
+        /// (126400,DCM,"Standardized Uptake Value"), included from CID 7180
+        StandardizedUptakeValue,
+        /// (126401,DCM,"SUVbw"), included from CID 7180
+        SUVbw,
+        /// (126402,DCM,"SUVlbm"), included from CID 7180
+        SUVlbm,
+        /// (126403,DCM,"SUVbsa"), included from CID 7180
+        SUVbsa,
+        /// (126404,DCM,"SUVibw"), included from CID 7180
+        SUVibw,
+        /// (G-A22A,SRT,"Length"), included from CID 7470
+        Length,
+        /// (121211,DCM,"Path length"), included from CID 7470
+        PathLength,
+        /// (121206,DCM,"Distance"), included from CID 7470
+        Distance,
+        /// (G-A220,SRT,"Width"), included from CID 7470
+        Width,
+        /// (G-D785,SRT,"Depth"), included from CID 7470
+        Depth,
+        /// (M-02550,SRT,"Diameter"), included from CID 7470
+        Diameter,
+        /// (G-A185,SRT,"Long Axis"), included from CID 7470
+        LongAxis,
+        /// (G-A186,SRT,"Short Axis"), included from CID 7470
+        ShortAxis,
+        /// (G-A193,SRT,"Major Axis"), included from CID 7470
+        MajorAxis,
+        /// (G-A194,SRT,"Minor Axis"), included from CID 7470
+        MinorAxis,
+        /// (G-A195,SRT,"Perpendicular Axis"), included from CID 7470
+        PerpendicularAxis,
+        /// (G-A196,SRT,"Radius"), included from CID 7470
+        Radius,
+        /// (G-A197,SRT,"Perimeter"), included from CID 7470
+        Perimeter,
+        /// (M-02560,SRT,"Circumference"), included from CID 7470
+        Circumference,
+        /// (G-A198,SRT,"Diameter of circumscribed circle"), included from CID 7470
+        DiameterOfCircumscribedCircle,
+        /// (121207,DCM,"Height"), included from CID 7470
+        Height,
+        /// (G-A166,SRT,"Area"), included from CID 7471
+        Area,
+        /// (G-A16A,SRT,"Area of defined region"), included from CID 7471
+        AreaOfDefinedRegion,
+        /// (G-D705,SRT,"Volume"), included from CID 7472
+        Volume,
+        /// (121216,DCM,"Volume estimated from single 2D region"), included from CID 7472
+        VolumeEstimatedFromSingle2DRegion,
+        /// (121218,DCM,"Volume estimated from two non-coplanar 2D regions"), included from CID 7472
+        VolumeEstimatedFromTwoNonCoplanar2DRegions,
+        /// (121217,DCM,"Volume estimated from three or more non-coplanar 2D regions"), included from CID 7472
+        VolumeEstimatedFromThreeOrMoreNonCoplanar2DRegions,
+        /// (121222,DCM,"Volume of sphere"), included from CID 7472
+        VolumeOfSphere,
+        /// (121221,DCM,"Volume of ellipsoid"), included from CID 7472
+        VolumeOfEllipsoid,
+        /// (121220,DCM,"Volume of circumscribed sphere"), included from CID 7472
+        VolumeOfCircumscribedSphere,
+        /// (121219,DCM,"Volume of bounding three dimensional region"), included from CID 7472
+        VolumeOfBoundingThreeDimensionalRegion
+    };
+
+    /** (default) constructor
+     ** @param  selectedValue  coded entry to be selected as the current value (optional).
+     *                         Should be a valid code according to the DICOM definitions
+     *                         for this context group, i.e. no checks are performed.
+     *                         Call DSRContextGroup::checkSelectedValue() if needed.
+     */
+    CID7469_GenericIntensityAndSizeMeasurements(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+
+    /** constructor
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     */
+    CID7469_GenericIntensityAndSizeMeasurements(const EnumType selectedValue,
+                                                const OFBool enhancedEncodingMode = OFFalse);
+
+    /** select a coded entry given by its type as the current value
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition selectValue(const EnumType selectedValue,
+                                    const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- static helper functions ---
+
+    /** initialize this context group explicitly.  Internally, the list of standard coded
+     *  entries is created and initialized by calling getCodes().
+     ** @note This function can be called multiple times but in case of multi-threaded
+     *        applications should be called at least once before any instance of this class
+     *        is actually used.  For single-threaded applications, there is no need to call
+     *        it since the initialization is done implicitly.
+     */
+    static void initialize();
+
+    /** cleanup this context group, i.e.\ delete the internal list of standard coded entries.
+     *  Usually, there is no need to call this method, but it might be useful in order to
+     *  explicitly free the associated memory, e.g. when checking for memory leaks.  The list
+     *  will be recreated automatically when needed (or when initialize() is called).
+     */
+    static void cleanup();
+
+    /** map a given type to the associated coded entry
+     ** @param  value                 type that should be mapped to a coded entry
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return coded entry that is associated with the given type
+     */
+    static DSRCodedEntryValue getCodedEntry(const EnumType value,
+                                            const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- reintroduce methods from base class
+
+     using DSRContextGroup::selectValue;
+     using DSRContextGroup::findCodedEntry;
+
+
+  protected:
+
+    /// type used for storing and managing the coded entries
+    typedef OFMap<EnumType, DSRBasicCodedEntry> CodeList;
+
+    /** print details on coded entries that are contained in this context group.
+     *  See DSRCodedEntryValue::print() for details of the coded entry output.
+     ** @param  stream  stream to which the output should be printed
+     */
+    virtual void printCodes(STD_NAMESPACE ostream &stream) const;
+
+    /** search for a given coded entry in this context group
+     ** @param  searchForCodedEntry   coded entry to be searched for
+     *  @param  foundCodedEntry       pointer to variable that will store the coded entry
+     *                                (if found and pointer is not NULL)
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return result of the search process, also defines the type of the entry
+     */
+    virtual OFCondition findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                       DSRCodedEntryValue *foundCodedEntry,
+                                       const OFBool enhancedEncodingMode = OFFalse) const;
+
+  // --- static helper function ---
+
+    /** get list of standard coded entries that are managed by this context group.
+     *  Internally, the singleton pattern is used, so the list is initialized only once.
+     *  Please note that this function is not thread-safe.  Therefore, the initialize()
+     *  function can be called before any instance of this class is actually used.
+     ** @return reference to list of coded entries managed by this context group
+     */
+    static CodeList &getCodes();
+
+    /** set the "Enhanced Encoding Mode" for a given coded entry
+     ** @param  codedEntryValue  coded entry for which the enhanced encoding mode is set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    static OFCondition setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue);
+
+
+  private:
+
+    /// pointer to internal code list (use a static variable for singleton pattern)
+    static CodeList *Codes;
+};
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7469_GenericIntensityAndSizeMeasurements CMR_CID7469;
+
+
+#endif
index d966d91cd10bb8f595156456cce61364abd6f466..7cbf48137ffe49e1d11728a17fb2cf954bb5352f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CMR_ContentMappingResource
@@ -44,10 +44,14 @@ class DCMTK_CMR_EXPORT CMR_ContentMappingResource
      *  - CID4031_CommonAnatomicRegions
      *  - CID5000_Languages
      *  - CID5001_Countries
+     *  - CID6147_ResponseCriteria
      *  - CID7021_MeasurementReportDocumentTitles
+     *  - CID7181_AbstractMultiDimensionalImageModelComponentUnits
      *  - CID7445_DeviceParticipatingRoles
      *  - CID7452_OrganizationalRoles
      *  - CID7453_PerformingRoles
+     *  - CID7464_GeneralRegionOfInterestMeasurementModifiers
+     *  - CID7469_GenericIntensityAndSizeMeasurements
      *  - CID10013_CTAcquisitionType
      *  - CID10033_CTReconstructionAlgorithm
      *
index 18b54c0e6f1fd6dcfea245aef29dd09d4f980410..8a1cd56e682d5cce789ff24da01de78639a91539 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CMR_SRNumericMeasurementValue
  *  class declaration  *
  *---------------------*/
 
-/** Class for SR numeric measurement values
- *  (extended version with additional support of the DICOM Content Mapping Resource)
+/** Class for SR numeric values and measurements
+ *  (extended version with additional support of the DICOM Content Mapping Resource).
+ *  This class checks whether the optional value qualifier uses a coded entry from the
+ *  Defined Context Group 42 (Numeric Value Qualifier), see DICOM PS 3.3 Table C.18.1-1.
  */
 class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
   : public DSRNumericMeasurementValue
@@ -37,7 +39,7 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
     CMR_SRNumericMeasurementValue();
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  check            if enabled, check 'numericValue' and 'measurementUnit' for
      *                           validity before setting them.  See corresponding setValue()
@@ -48,17 +50,29 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
                                   const OFBool check = OFTrue);
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  valueQualifier  code representing the numeric value qualifier.  Used to
+     *                          specify the reason for the absence of the measured value
+     *                          sequence, i.e. why the numeric value and measurement unit
+     *                          are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See corresponding setValue() method for details.
+     */
+    CMR_SRNumericMeasurementValue(const CID42_NumericValueQualifier &valueQualifier,
+                                  const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  valueQualifier   code representing the numeric value qualifier (optional).
      *                           Can also be used to specify the reason for the absence of
-     *                           the measured value sequence.
+     *                           the measured value sequence (where 'numericValue' and
+     *                           'measurementUnit' are stored).
      *  @param  check            if enabled, check values for validity before setting them.
      *                           See corresponding setValue() method for details.
      */
     CMR_SRNumericMeasurementValue(const OFString &numericValue,
                                   const DSRCodedEntryValue &measurementUnit,
-                                  const DSRCodedEntryValue &valueQualifier,
+                                  const CID42_NumericValueQualifier &valueQualifier,
                                   const OFBool check = OFTrue);
 
     /** copy constructor
@@ -66,6 +80,11 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
      */
     CMR_SRNumericMeasurementValue(const CMR_SRNumericMeasurementValue &numericMeasurement);
 
+    /** copy constructor
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     */
+    CMR_SRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement);
+
     /** destructor
      */
     virtual ~CMR_SRNumericMeasurementValue();
@@ -76,19 +95,59 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
      */
     CMR_SRNumericMeasurementValue &operator=(const CMR_SRNumericMeasurementValue &numericMeasurement);
 
+    /** set empty numeric value and measurement unit with a numeric value qualifier.
+     *  Before setting the value, it is usually checked.  If the value is invalid, the
+     *  current numeric measurement value is not replaced and remains unchanged.
+     ** @param  valueQualifier  numeric value qualifier to be set.  Used to specify the
+     *                          reason for the absence of the measured value sequence,
+     *                          i.e. why the numeric value and measurement unit are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See checkNumericValueQualifier() method for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const CID42_NumericValueQualifier &valueQualifier,
+                         const OFBool check = OFTrue);
+
+    /** set numeric value, measurement unit and numeric value qualifier.
+     *  Before setting the values, they are usually checked.  Please note that both
+     *  'numericValue' and 'measurementUnit' either have to be empty or non-empty.
+     *  If one of the three values is invalid, the current numeric measurement value is not
+     *  replaced and remains unchanged.  If the values are replaced, the optional floating
+     *  point and rational representations are cleared, i.e. they have to be set manually if
+     *  needed.
+     ** @param  numericValue     numeric value to be set (VR=DS, mandatory)
+     *  @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  valueQualifier   numeric value qualifier to be set (optional).  Can also be
+     *                           used to specify the reason for the absence of the measured
+     *                           value sequence (where 'numericValue' and 'measurementUnit'
+     *                           are stored).  Use an empty code to remove the current value.
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See checkXXX() methods for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const OFString &numericValue,
+                         const DSRCodedEntryValue &measurementUnit,
+                         const CID42_NumericValueQualifier &valueQualifier,
+                         const OFBool check = OFTrue);
+
     /** set numeric value qualifier.
      *  This optional code specifies the qualification of the Numeric Value in the Measured
      *  Value Sequence, or the reason for the absence of the Measured Value Sequence Item.
-     ** @param  valueQualifier        numeric value qualifier to be set
-     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     *  Before setting the code, it is usually checked.  If the code is invalid the current
+     *  code is not replaced and remains unchanged.
+     ** @param  valueQualifier  numeric value qualifier to be set (optional).  Use an empty
+     *                          code to remove the current value.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See checkNumericValueQualifier() method for details.
      ** @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition setNumericValueQualifier(CID42_NumericValueQualifier::EnumType valueQualifier,
-                                         const OFBool enhancedEncodingMode = OFFalse);
+    OFCondition setNumericValueQualifier(const CID42_NumericValueQualifier &valueQualifier,
+                                         const OFBool check = OFTrue);
 
   // --- reintroduce method from base class
 
-     using DSRNumericMeasurementValue::setNumericValueQualifier;
+    using DSRNumericMeasurementValue::setValue;
+    using DSRNumericMeasurementValue::setNumericValueQualifier;
 
 
   protected:
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h b/dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h
new file mode 100644 (file)
index 0000000..2838da0
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CMR_SRNumericMeasurementValueWithUnits
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#ifndef CMR_SRNUMVLU_H
+#define CMR_SRNUMVLU_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/srnumvl.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class for SR numeric values and measurements
+ *  (extended version with additional support of the DICOM Content Mapping Resource).
+ *  This class checks whether the optional value qualifier uses a coded entry from the
+ *  Defined Context Group 42 (Numeric Value Qualifier), see DICOM PS 3.3 Table C.18.1-1.
+ *  It also provides a means of specifying the Context Group for the measurement unit
+ *  as a C++ template type parameter.  Both Baseline (BCID) and Defined Context Groups
+ *  (DCID) are supported.
+ ** @tparam  T_Units         template type used for the measurement units (context group)
+ *  @tparam  T_DefinedGroup  flag indicating whether 'T_Units' is used as a baseline
+ *                           (default) or defined context group
+ */
+template <typename T_Units, OFBool T_DefinedGroup = OFFalse>
+class CMR_SRNumericMeasurementValueWithUnits
+  : public CMR_SRNumericMeasurementValue
+{
+
+  public:
+
+    /** default constructor
+     */
+    CMR_SRNumericMeasurementValueWithUnits();
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
+     *  @param  measurementUnit  code representing the units of measurement (mandatory)
+     *  @param  check            if enabled, check 'numericValue' and 'measurementUnit' for
+     *                           validity before setting them.  See corresponding setValue()
+     *                           method for details.
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                           const T_Units &measurementUnit,
+                                           const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  valueQualifier  code representing the numeric value qualifier.  Used to
+     *                          specify the reason for the absence of the measured value
+     *                          sequence, i.e. why the numeric value and measurement unit
+     *                          are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See corresponding setValue() method for details.
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const CID42_NumericValueQualifier &valueQualifier,
+                                           const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
+     *  @param  measurementUnit  code representing the units of measurement (mandatory)
+     *  @param  valueQualifier   code representing the numeric value qualifier (optional).
+     *                           Can also be used to specify the reason for the absence of
+     *                           the measured value sequence (where 'numericValue' and
+     *                           'measurementUnit' are stored).
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See corresponding setValue() method for details.
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                           const T_Units &measurementUnit,
+                                           const CID42_NumericValueQualifier &valueQualifier,
+                                           const OFBool check = OFTrue);
+
+    /** copy constructor
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement);
+
+    /** copy constructor
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValue &numericMeasurement);
+
+    /** destructor
+     */
+    virtual ~CMR_SRNumericMeasurementValueWithUnits();
+
+    /** assignment operator
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     ** @return reference to this numeric value after 'numericMeasurement' has been copied
+     */
+    CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &operator=(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement);
+
+    /** set numeric value and measurement unit.
+     *  Before setting the values, they are usually checked.  Please note that both values
+     *  (i.e. 'numericValue' and 'measurementUnit') either have to be empty or non-empty.
+     *  If the value pair is invalid, the current value pair is not replaced and remains
+     *  unchanged.  If the value pair is replaced, the optional floating point and rational
+     *  representations are cleared, i.e. they have to be set manually if needed.
+     ** @param  numericValue     numeric value to be set (VR=DS, mandatory)
+     *  @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See checkXXX() methods for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const OFString &numericValue,
+                         const T_Units &measurementUnit,
+                         const OFBool check = OFTrue);
+
+    /** set numeric value, measurement unit and numeric value qualifier.
+     *  Before setting the values, they are usually checked.  Please note that both
+     *  'numericValue' and 'measurementUnit' either have to be empty or non-empty.
+     *  If one of the three values is invalid, the current numeric measurement value is not
+     *  replaced and remains unchanged.  If the values are replaced, the optional floating
+     *  point and rational representations are cleared, i.e. they have to be set manually if
+     *  needed.
+     ** @param  numericValue     numeric value to be set (VR=DS, mandatory)
+     *  @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  valueQualifier   numeric value qualifier to be set (optional).  Can also be
+     *                           used to specify the reason for the absence of the measured
+     *                           value sequence (where 'numericValue' and 'measurementUnit'
+     *                           are stored).  Use an empty code to remove the current value.
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See checkXXX() methods for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const OFString &numericValue,
+                         const T_Units &measurementUnit,
+                         const CID42_NumericValueQualifier &valueQualifier,
+                         const OFBool check = OFTrue);
+
+    /** set measurement unit.
+     *  Before setting the code, it is usually checked.  If the code is invalid the current
+     *  code is not replaced and remains unchanged.
+     ** @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  check            if enabled, check value for validity before setting it.
+     *                           See checkMeasurementUnit() method for details.  An empty
+     *                           value is never accepted, use the clear() method instead.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setMeasurementUnit(const T_Units &measurementUnit,
+                                   const OFBool check = OFTrue);
+
+
+  protected:
+
+    /** check the specified measurement unit for validity.
+     *  First, the inherited method CMR_SRNumericMeasurementValue::checkMeasurementUnit()
+     *  is called.  Then, conformance with any Defined Context Group (T_Units) is checked.
+     ** @param  measurementUnit  measurement unit to be checked
+     ** @return status, EC_Normal if measurement unit is valid, an error code otherwise
+     */
+    virtual OFCondition checkMeasurementUnit(const DSRCodedEntryValue &measurementUnit) const;
+
+    /** check the specified measurement unit for validity.
+     *  This method also checks conformance with any Defined Context Group (T_Units).
+     ** @param  measurementUnit  measurement unit to be checked
+     ** @return status, EC_Normal if measurement unit is valid, an error code otherwise
+     */
+    virtual OFCondition checkMeasurementUnit(const T_Units &measurementUnit) const;
+};
+
+
+/*------------------*
+ *  implementation  *
+ *------------------*/
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits()
+  : CMR_SRNumericMeasurementValue()
+{
+}
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                                                                                        const T_Units &measurementUnit,
+                                                                                                        const OFBool check)
+  : CMR_SRNumericMeasurementValue()
+{
+    /* use this method in order to pass T_Units parameter */
+    setValue(numericValue, measurementUnit, check);
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const CID42_NumericValueQualifier &valueQualifier,
+                                                                                                        const OFBool check)
+  : CMR_SRNumericMeasurementValue(valueQualifier, check)
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                                                                                        const T_Units &measurementUnit,
+                                                                                                        const CID42_NumericValueQualifier &valueQualifier,
+                                                                                                        const OFBool check)
+  : CMR_SRNumericMeasurementValue()
+{
+    /* use this method in order to pass T_Units parameter */
+    setValue(numericValue, measurementUnit, valueQualifier, check);
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement)
+  : CMR_SRNumericMeasurementValue(numericMeasurement)
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValue &numericMeasurement)
+  : CMR_SRNumericMeasurementValue(numericMeasurement)
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::~CMR_SRNumericMeasurementValueWithUnits()
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::operator=(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement)
+{
+    CMR_SRNumericMeasurementValue::operator=(numericMeasurement);
+    return *this;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setValue(const OFString &numericValue,
+                                                                                      const T_Units &measurementUnit,
+                                                                                      const OFBool check)
+{
+    const DSRCodedEntryValue valueQualifier;
+    /* call the function doing the real work */
+    return CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setValue(numericValue, measurementUnit, valueQualifier, check);
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setValue(const OFString &numericValue,
+                                                                                      const T_Units &measurementUnit,
+                                                                                      const CID42_NumericValueQualifier &valueQualifier,
+                                                                                      const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    if (check)
+    {
+        /* only check if at least one of the two values is non-empty */
+        if (!numericValue.empty() || !measurementUnit.hasSelectedValue())
+        {
+            /* check whether the passed values are valid */
+            result = checkNumericValue(numericValue);
+            if (result.good())
+                result = checkMeasurementUnit(measurementUnit);
+        }
+        if (result.good())
+            result = checkNumericValueQualifier(valueQualifier);
+    }
+    /* set the value (without checking all the details again) */
+    if (result.good())
+        result = CMR_SRNumericMeasurementValue::setValue(numericValue, measurementUnit, valueQualifier, OFFalse /*check*/);
+    return result;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setMeasurementUnit(const T_Units &measurementUnit,
+                                                                                                const OFBool check)
+{
+    /* first, check given measurement unit for validity (if not disabled) */
+    OFCondition result = (check) ? checkMeasurementUnit(measurementUnit) : EC_Normal;
+    /* then, set the measurement unit (without checking the coded entry again) */
+    if (result.good())
+        result = CMR_SRNumericMeasurementValue::setMeasurementUnit(measurementUnit, OFFalse /*check*/);
+    return result;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::checkMeasurementUnit(const DSRCodedEntryValue &measurementUnit) const
+{
+    /* first, check coded entry for basic validity */
+    OFCondition result = CMR_SRNumericMeasurementValue::checkMeasurementUnit(measurementUnit);
+    /* then, check whether coded entry is allowed (if defined context group) */
+    if (result.good() && T_DefinedGroup)
+    {
+        const T_Units contextGroup;
+        if (!contextGroup.hasCodedEntry(measurementUnit))
+            result = SR_EC_CodedEntryNotInContextGroup;
+    }
+    return result;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::checkMeasurementUnit(const T_Units &measurementUnit) const
+{
+    /* measurement unit should never be empty */
+    return measurementUnit.hasSelectedValue() ? measurementUnit.checkSelectedValue(T_DefinedGroup)
+                                              : SR_EC_InvalidValue;
+}
+
+
+#endif
index ce1a09f8c0f118c3ea62db6b07c808315f6074ae..cca17e3e4d24e0924482869ae2aeb49e96d0a00c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class TID1001_ObservationContext
@@ -83,6 +83,7 @@ class DCMTK_CMR_EXPORT TID1001_ObservationContext
      *                            whilst the observations were being made (optional)
      *  @param  procedureRoles    the roles played by a device in a procedure (optional,
      *                            multiple values allowed)
+     *  @param  stationAEtitle    application entity title of the device (optional)
      *  @param  check             if enabled, check values for validity before setting them
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -93,6 +94,7 @@ class DCMTK_CMR_EXPORT TID1001_ObservationContext
                                   const OFString &serialNumber = "",
                                   const OFString &physicalLocation = "",
                                   const DeviceParticipatingRolesList &procedureRoles = DeviceParticipatingRolesList(),
+                                  const OFString &stationAEtitle = "",
                                   const OFBool check = OFTrue);
 
     /** add content items for TID 1005 (Procedure Context)
@@ -107,4 +109,12 @@ class DCMTK_CMR_EXPORT TID1001_ObservationContext
 };
 
 
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the SR template class
+typedef TID1001_ObservationContext CMR_TID1001;
+
+
 #endif
index 9fde6068791323d13c0e2e1d7a9ac13f137fe51a..d8f31a3ef5881fc1cc5ba878f086ad7f9661c035 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class TID1204_LanguageOfContentItemAndDescendants
@@ -27,7 +27,7 @@
  *---------------------*/
 
 /** Implementation of DCMR Template:
- *  TID 1204 - Language of Content Item and Descendants
+ *  TID 1204 - Language of Content Item and Descendants.
  *  All added content items are annotated with a text in the format "TID 1204 - Row [n]".
  */
 class DCMTK_CMR_EXPORT TID1204_LanguageOfContentItemAndDescendants
@@ -55,4 +55,12 @@ class DCMTK_CMR_EXPORT TID1204_LanguageOfContentItemAndDescendants
 };
 
 
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the SR template class
+typedef TID1204_LanguageOfContentItemAndDescendants CMR_TID1204;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
new file mode 100644 (file)
index 0000000..58bace6
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class TID1411_VolumetricROIMeasurements
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#ifndef CMR_TID1411_H
+#define CMR_TID1411_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrstpl.h"
+
+#include "dcmtk/dcmsr/cmr/define.h"
+#include "dcmtk/dcmsr/cmr/srnumvlu.h"
+
+
+// include this file in doxygen documentation
+
+/** @file tid1411.h
+ *  @brief Interface class and error constants for TID 1411 in module dcmsr/cmr
+ */
+
+
+/*------------------------*
+ *  constant definitions  *
+ *------------------------*/
+
+/** @name specific error conditions for TID 1411 in module dcmsr/cmr
+ */
+//@{
+
+/// error: there is no measurement group to add entries to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoMeasurementGroup;
+/// error: the given segmentation object does not conform to the template constraints
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_InvalidSegmentationObject;
+/// error: the given DICOM object is not a real world value mapping object
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_InvalidRealWorldValueMappingObject;
+
+//@}
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Template:
+ *  TID 1411 - Volumetric ROI Measurements (and included templates 1502 and 1419).
+ *  All added content items are annotated with a text in the format "TID 1411 - Row [n]".
+ ** @tparam  T_Measurement  concept names for the numeric measurements (context group)
+ *  @tparam  T_Units        units of the numeric measurement values (context group)
+ *  @tparam  T_Method       methods used for measuring the values (context group)
+ *  @tparam  T_Derivation   methods of deriving or calculating the values (context group)
+ ** @note Please note that currently only the mandatory (and some optional/conditional)
+ *        content items and included templates are supported.
+ *  @note Also note that this template class requires explicit instantiation for those
+ *        combinations of the template parameters that are actually used.  This is
+ *        because the implementation is "hidden" in a separate source file, which has
+ *        some advantages over the usual header-only approach.
+ */
+template<typename T_Measurement, typename T_Units, typename T_Method, typename T_Derivation>
+class DCMTK_CMR_EXPORT TID1411_VolumetricROIMeasurements
+  : public DSRSubTemplate
+{
+
+  public:
+
+    // type definition
+    typedef CMR_SRNumericMeasurementValueWithUnits<T_Units> MeasurementValue;
+
+    /** (default) constructor
+     ** @param  createGroup  flag indicating whether to create an empty measurement group
+     *                       by calling createMeasurementGroup() during startup
+     */
+    TID1411_VolumetricROIMeasurements(const OFBool createGroup = OFFalse);
+
+    /** check whether the current internal state is valid.
+     *  That means, whether the base class is valid and whether all mandatory content
+     *  items and included templates are valid, i.e. hasMeasurementGroup(),
+     *  hasTrackingIdentifier(), hasTrackingUniqueIdentifier(), hasReferencedSegment(),
+     *  hasSourceSeriesForSegmentation() and hasROIMeasurements() return true.
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** check whether the 'Measurement Group' content item (TID 1411 - Row 1) is present.
+     *  Initially, this mandatory content item is created by the constructor of this
+     *  class (if not disabled).  After clear() has been called, it can be created again
+     *  by calling createMeasurementGroup().
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective content item has
+     *                         child nodes.  By default, the presence of the higher-level
+     *                         CONTAINER is checked only.
+     ** @return OFTrue if the measurement group is present, OFFalse otherwise
+     */
+    OFBool hasMeasurementGroup(const OFBool checkChildren = OFFalse) const;
+
+    /** check whether the 'Tracking Identifier' content item (TID 1411 - Row 2) is
+     *  present.  This content item is mandatory, i.e. should be present with a value.
+     ** @return OFTrue if the tracking identifier is present, OFFalse otherwise
+     */
+    OFBool hasTrackingIdentifier() const;
+
+    /** check whether the 'Tracking Unique Identifier' content item (TID 1411 - Row 3) is
+     *  present.  This content item is mandatory, i.e. should be present with a value.
+     ** @return OFTrue if the tracking unique identifier is present, OFFalse otherwise
+     */
+    OFBool hasTrackingUniqueIdentifier() const;
+
+    /** check whether the 'Referenced Segment' content item (TID 1411 - Row 7) is present.
+     *  This content item is conditional, but should be present to meet the conditions.
+     ** @return OFTrue if the referenced segment is present, OFFalse otherwise
+     */
+    OFBool hasReferencedSegment() const;
+
+    /** check whether the 'Source Series for Segmentation' content item (TID 1411 -
+     *  Row 12) is present.  This content item is conditional, but should be present to
+     *  meet the conditions.
+     ** @return OFTrue if source series for segmentation is present, OFFalse otherwise
+     */
+    OFBool hasSourceSeriesForSegmentation() const;
+
+    /** check whether there is an included 'ROI Measurements' template (TID 1411 -
+     *  Row 15) in this measurement template.  This included template is mandatory.
+     ** @return OFTrue if ROI measurements are present, OFFalse otherwise
+     */
+    OFBool hasROIMeasurements() const;
+
+    /** set the value of the 'Activity Session' content item (TID 1411 - Row 1b).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  session  identifier of the session during which the measurements were made
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setActivitySession(const OFString &session,
+                                   const OFBool check = OFTrue);
+
+    /** set the value of the 'Tracking Identifier' content item (TID 1411 - Row 2).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  trackingID  a text label used for tracking a finding or feature
+     *  @param  check       if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setTrackingIdentifier(const OFString &trackingID,
+                                      const OFBool check = OFTrue);
+
+    /** set the value of the 'Tracking Unique Identifier' content item (TID 1411 - Row 3).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  trackingUID  a unique identifier used for tracking a finding or feature
+     *                       (associated DICOM VR=UI)
+     *  @param  check        if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setTrackingUniqueIdentifier(const OFString &trackingUID,
+                                            const OFBool check = OFTrue);
+
+    /** set the value of the 'Finding' content item (TID 1411 - Row 3b).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  finding  coded entry that describes the type of the finding
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setFinding(const DSRCodedEntryValue &finding,
+                           const OFBool check = OFTrue);
+
+    /** set the value of the 'Time Point' content item (TID 1502 - Row 3).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  timePoint  a short pre-defined label that is human-readable
+     *  @param  check      if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setTimePoint(const OFString &timePoint,
+                             const OFBool check = OFTrue);
+
+    /** set the value of the 'Referenced Segment' content item (TID 1411 - Row 7).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  segment  reference to a segmentation object with a single selected
+     *                   segment; specifically the pixels or voxels identified as
+     *                   belonging to the classification of the identified segment
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setReferencedSegment(const DSRImageReferenceValue &segment,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Referenced Segment' content item (TID 1411 - Row 7).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     *  If 'copyTracking' is enabled and the 'dataset' contains appropriate tracking
+     *  information for the given 'segmentNumber', setTrackingIdentifier() and
+     *  setTrackingUniqueIdentifier() are also called by this method.
+     ** @param  dataset        DICOM dataset from which the values for the referenced
+     *                         segment (e.g. SOP class UID and SOP instance UID) should
+     *                         be retrieved
+     *  @param  segmentNumber  number of the segment that should be referenced.  The
+     *                         value is only checked when 'copyTracking' is enabled.
+     *  @param  copyTracking   flag indicating whether to copy tracking information
+     *                         (tracking ID and UID) from the 'dataset', if available
+     *  @param  check          if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setReferencedSegment(DcmItem &dataset,
+                                     const Uint16 segmentNumber,
+                                     const OFBool copyTracking = OFTrue,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Source series for segmentation' content item (TID 1411 -
+     *  Row 12).  A measurement group is created automatically (if none is present).
+     *  If the content item already exists, its value is overwritten.
+     ** @param  seriesUID  the unique identifier of the source series of images that
+     *                     were segmented to identify the ROI (associated DICOM VR=UI)
+     *  @param  check      if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setSourceSeriesForSegmentation(const OFString &seriesUID,
+                                               const OFBool check = OFTrue);
+
+    /** set the value of the 'Real World Value Map used for measurement' content item
+     *  (TID 1411 - Row 14).  A measurement group is created automatically (if none is
+     *  present).  If the content item already exists, its value is overwritten.
+     ** @param  valueMap  reference to a real world value mapping object applied to the
+     *                    stored image pixel values before their use for a measurement
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setRealWorldValueMap(const DSRCompositeReferenceValue &valueMap,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Real World Value Map used for measurement' content item
+     *  (TID 1411 - Row 14).  A measurement group is created automatically (if none is
+     *  present).  If the content item already exists, its value is overwritten.
+     ** @param  dataset  DICOM dataset from which the values for the reference to a
+     *                   real world value mapping object (SOP class UID and SOP instance
+     *                   UID) should be retrieved
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setRealWorldValueMap(DcmItem &dataset,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Measurement Method' content item (TID 1419 - Row 1).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  method  coded entry describing the method used for measuring the values
+     *                  (e.g.\ from the given context group 'T_Method')
+     *  @param  check   if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setMeasurementMethod(const T_Method &method,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Finding Site' content item (TID 1419 - Row 2).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  site   coded entry describing the anatomic location of the measurements
+     *  @param  check  if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setFindingSite(const DSRCodedEntryValue &site,
+                               const OFBool check = OFTrue);
+
+    /** add a measurement as defined in 'ROI Measurements' (TID 1419 - Row 5, 7 and 8).
+     *  There should be at least a single instance of the associated template.
+     ** @param  conceptName   coded entry specifying the concept name of the measurement
+     *                        (e.g.\ from the given context group 'T_Measurement')
+     *  @param  numericValue  numeric measurement value to be set.  The measurement unit
+     *                        could be taken from the baseline context group 'T_Units'.
+     *  @param  method        optional method used for measuring the value
+     *                        (e.g.\ from the given context group 'T_Method')
+     *  @param  derivation    optional method of deriving or calculating the value
+     *                        (e.g.\ from the context group 'T_Derivation')
+     *  @param  check         if enabled, check value for validity before setting it
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addMeasurement(const T_Measurement &conceptName,
+                               const MeasurementValue &numericValue,
+                               const T_Method &method = T_Method(),
+                               const T_Derivation &derivation = T_Derivation(),
+                               const OFBool check = OFTrue);
+
+
+  protected:
+
+    /** create the mandatory root content item of this template, i.e.\ TID 1411 - Row 1.
+     *  It is expected that the tree is currently empty.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createMeasurementGroup();
+
+    /** add a new or replace an existing content item with a given node ID.
+     *  If the content item does not exist, it is added to the measurement group, i.e.
+     *  below the root node.  If it does exist, both the 'valueType' and 'conceptName'
+     *  are checked before replacing the value.  However, the value is not replaced by
+     *  this method.  This is up to the caller after this method returned with success.
+     ** @param  nodePos           index of the list entry that stores the ID of the node
+     *                            to search for
+     *  @param  relationshipType  relationship type of the content item to be added/replaced
+     *  @param  valueType         value type of the content item to be added/replaced
+     *  @param  conceptName       concept name of the content item to be added/replaced
+     *  @param  annotationText    optional text used to annotate the content item
+     *  @param  check             if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addOrReplaceContentItem(const size_t nodePos,
+                                        const E_RelationshipType relationshipType,
+                                        const E_ValueType valueType,
+                                        const DSRCodedEntryValue &conceptName,
+                                        const OFString &annotationText,
+                                        const OFBool check);
+};
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
new file mode 100644 (file)
index 0000000..59813a6
--- /dev/null
@@ -0,0 +1,290 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class TID1500_MeasurementReport
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#ifndef CMR_TID1500_H
+#define CMR_TID1500_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrrtpl.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
+
+#include "dcmtk/dcmsr/cmr/define.h"
+#include "dcmtk/dcmsr/cmr/tid1001.h"
+#include "dcmtk/dcmsr/cmr/tid1204.h"
+#include "dcmtk/dcmsr/cmr/tid1411.h"
+#include "dcmtk/dcmsr/cmr/tid1600.h"
+#include "dcmtk/dcmsr/cmr/cid100.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
+#include "dcmtk/dcmsr/cmr/cid7021.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+#include "dcmtk/dcmsr/cmr/cid7469.h"
+
+
+// include this file in doxygen documentation
+
+/** @file tid1500.h
+ *  @brief Interface class and error constants for TID 1500 in module dcmsr/cmr
+ */
+
+
+/*------------------------*
+ *  constant definitions  *
+ *------------------------*/
+
+/** @name specific error conditions for TID 1500 in module dcmsr/cmr
+ */
+//@{
+
+/// error: there is no measurement report to add content items to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoMeasurementReport;
+
+//@}
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Template:
+ *  TID 1500 - Measurement Report (and included templates 1204, 1001, 1600, 1411).
+ *  All added content items are annotated with a text in the format "TID 1500 - Row [n]".
+ ** @note Please note that currently only the mandatory (and some optional/conditional)
+ *        content items and included templates are supported.
+ */
+class DCMTK_CMR_EXPORT TID1500_MeasurementReport
+  : public DSRRootTemplate
+{
+
+  public:
+
+    // type definition
+    typedef TID1411_VolumetricROIMeasurements<CID7469_GenericIntensityAndSizeMeasurements,
+                                              CID7181_AbstractMultiDimensionalImageModelComponentUnits,
+                                              CID6147_ResponseCriteria,
+                                              CID7464_GeneralRegionOfInterestMeasurementModifiers>
+            TID1411_Measurements;
+
+    /** (default) constructor.
+     *  Also creates an initial, almost empty measurement report by calling
+     *  createNewMeasurementReport(), but only if a non-empty 'title' is passed.
+     ** @param  title  optional document title to be set (from CID 7021 - Measurement
+     *                 Report Document Titles), i.e.\ the concept name of the root node
+     */
+    TID1500_MeasurementReport(const CID7021_MeasurementReportDocumentTitles &title = CID7021_MeasurementReportDocumentTitles());
+
+    /** clear internal member variables.
+     *  Also see notes on the clear() method of the base class.
+     */
+    virtual void clear();
+
+    /** check whether the current internal state is valid.
+     *  That means, check whether the base class is valid, the mandatory included
+     *  templates TID 1204, 1001 and 1600 are valid, and whether hasProcedureReported()
+     *  as well as hasImagingMeasurements() or hasQualitativeEvaluations() return true.
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    virtual OFBool isValid() const;
+
+    /** check whether there are any 'Procedure reported' content items (TID 1500 - Row 4)
+     *  in this measurement report.  This content item is mandatory, i.e. one or more
+     *  instances of the associated content item should be present.
+     ** @return OFTrue if at least one procedure reported is present, OFFalse otherwise
+     */
+    OFBool hasProcedureReported() const;
+
+    /** check whether there is an included 'Volumetric ROI Measurements' template
+     *  (TID 1500 - Row 8) in this measurement report.  Initially, this optional
+     *  sub-template is created and included by the constructor of this class.  After
+     *  clear() has been called or no document title is passed to the constructor, it
+     *  can be created again by calling createNewMeasurementReport().
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective sub-template has
+     *                         any content (child nodes).  By default, the presence of
+     *                         the "included template" content item is checked only.
+     ** @return OFTrue if volumetric ROI measurements are present, OFFalse otherwise
+     */
+    OFBool hasVolumetricROIMeasurements(const OFBool checkChildren = OFFalse) const;
+
+    /** check whether there is an 'Imaging Measurements' content item (TID 1500 - Row 6)
+     *  in this measurement report.  Initially, this conditional content item is created
+     *  by the constructor of this class.  After clear() has been called or no document
+     *  title is passed to the constructor, it can be created again by calling
+     *  createNewMeasurementReport().
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective content item has
+     *                         child nodes.  By default, the presence of the higher-level
+     *                         CONTAINER is checked only.
+     ** @return OFTrue if imaging measurements are present, OFFalse otherwise
+     */
+    OFBool hasImagingMeasurements(const OFBool checkChildren = OFFalse) const;
+
+    /** check whether there is an 'Qualitative Evaluations' content item (TID 1500 -
+     *  Row 12) in this measurement report
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective content item has
+     *                         child nodes.  By default, the presence of the higher-level
+     *                         CONTAINER is checked only.
+     ** @return OFTrue if qualitative evaluations are present, OFFalse otherwise
+     */
+    OFBool hasQualitativeEvaluations(const OFBool checkChildren = OFFalse) const;
+
+    /** get language of this report as defined by TID 1204 (Language of Content Item and
+     *  Descendants).  This included template is mandatory, i.e. should not be empty.
+     ** @return reference to internally managed SR template
+     */
+    inline TID1204_LanguageOfContentItemAndDescendants &getLanguage() const
+    {
+        return *OFstatic_cast(TID1204_LanguageOfContentItemAndDescendants *, Language.get());
+    }
+
+    /** get observation context of this report as defined by TID 1001 (Observation
+     *  Context).  This included template is mandatory, i.e. should not be empty.
+     ** @return reference to internally managed SR template
+     */
+    inline TID1001_ObservationContext &getObservationContext() const
+    {
+        return *OFstatic_cast(TID1001_ObservationContext *, ObservationContext.get());
+    }
+
+    /** get image library of this report as defined by TID 1600 (Image Library).
+     *  This included template is mandatory, i.e. should not be empty.
+     ** @return reference to internally managed SR template
+     */
+    inline TID1600_ImageLibrary &getImageLibrary() const
+    {
+        return *OFstatic_cast(TID1600_ImageLibrary *, ImageLibrary.get());
+    }
+
+    /** get volumetric ROI measurements of this report as defined by TID 1411 (Volumetric
+     *  ROI Measurements), i.e.\ the current instance of TID 1500 - Row 8.
+     *  This included template is optional, i.e. might be empty (but not absent).
+     *  Further instances can be added by calling addVolumetricROIMeasurements().
+     ** @return reference to internally managed SR template (current instance)
+     */
+    inline TID1411_Measurements &getVolumetricROIMeasurements() const
+    {
+        return *OFstatic_cast(TID1411_Measurements *, VolumetricROIMeasurements.get());
+    }
+
+    /** get document title of this report, i.e.\ the concept name of the root node
+     ** @param  titleCode  coded entry that specifies the document title of this report
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getDocumentTitle(DSRCodedEntryValue &titleCode);
+
+    /** create a new measurement report.
+     *  Clear the report and create the mandatory (and other supported) content items of
+     *  this template, i.e.\ TID 1500 - Row 1 to 6 and 8.
+     ** @param  title  document title to be set (from CID 7021 - Measurement Report
+     *                 Document Titles), i.e.\ the concept name of the root node
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createNewMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title);
+
+    /** set language of this report as defined by TID 1204 (Language of Content Item and
+     *  Descendants)
+     ** @param  language  language of the report, being a language that is primarily
+     *                    used for human communication (from CID 5000 - Languages)
+     *  @param  country   coded entry that describes the country-specific variant of
+     *                    'language' (optional, from CID 5001 - Countries)
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setLanguage(const CID5000_Languages &language,
+                            const CID5001_Countries &country = CID5001_Countries(),
+                            const OFBool check = OFTrue);
+
+    /** add the imaging procedure whose results are reported (TID 1500 - Row 4).
+     *  There should be at least a single instance of the associated content item.
+     ** @param  procedure  coded entry that describes the imaging procedure to be added
+     *                     (from CID 100 - Quantitative Diagnostic Imaging Procedures)
+     *  @param  check      if enabled, check value for validity before setting it
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addProcedureReported(const CID100_QuantitativeDiagnosticImagingProcedures &procedure,
+                                     const OFBool check = OFTrue);
+
+    /** create another instance of TID 1411 (Volumetric ROI Measurements) and add it as
+     *  an included template to this report (TID 1500 - Row 8).  A first instance of
+     *  TID 1411 is created and added by calling createNewMeasurementReport().  Access
+     *  to the current instance is available through getVolumetricROIMeasurements().
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addVolumetricROIMeasurements();
+
+    /** add a qualitative evaluation related to the entire subject of the report as a
+     *  coded entry (TID 1500 - Row 13).  The higher-level CONTAINER (Row 12) is created
+     *  automatically (if none is present).
+     ** @param  conceptName  coded entry to be set as the concept name
+     *  @param  codeValue    coded entry to be set as the value of the new content item
+     *  @param  check        if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                         const DSRCodedEntryValue &codeValue,
+                                         const OFBool check = OFTrue);
+
+    /** add a qualitative evaluation related to the entire subject of the report in
+     *  text form (TID 1500 - Row 14).  The higher-level CONTAINER (Row 12) is created
+     *  automatically (if none is present).
+     ** @param  conceptName  coded entry to be set as the concept name
+     *  @param  stringValue  character string to be set as the value of the content item
+     *  @param  check        if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                         const OFString &stringValue,
+                                         const OFBool check = OFTrue);
+
+
+  protected:
+
+    /** create the mandatory (and other supported) content items of this template,
+     *  i.e.\ TID 1500 - Row 1 to 6 and 8.  It is expected that the tree is currently
+     *  empty.
+     ** @param  title  coded entry that specifies the document title to be set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title);
+
+    /** create the 'Qualitative Evaluations' content item (TID 1500 - Row 12) if not
+     *  existing yet
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createQualitativeEvaluations();
+
+
+  private:
+
+    // shared pointer to included template "Language of Content Item and Descendants" (TID 1204)
+    DSRSharedSubTemplate Language;
+    // shared pointer to included template "Observation Context" (TID 1001)
+    DSRSharedSubTemplate ObservationContext;
+    // shared pointer to included template "Image Library" (TID 1600)
+    DSRSharedSubTemplate ImageLibrary;
+    // shared pointer to included template "Volumetric ROI Measurements" (TID 1411)
+    DSRSharedSubTemplate VolumetricROIMeasurements;
+};
+
+
+/*--------------------*
+ *  type definitions  *
+ *--------------------*/
+
+// define short names for the SR template classes
+typedef TID1500_MeasurementReport CMR_TID1500;
+typedef TID1500_MeasurementReport::TID1411_Measurements CMR_TID1411_in_TID1500;
+
+
+#endif
index 75eaca613e4e8534d026dd6c66b3a263f8484b2b..e9b6f7019c54e176e7bf0bb18d3d6843b4a08900 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class TID1600_ImageLibrary
 #include "dcmtk/dcmsr/dsrstpl.h"
 
 #include "dcmtk/dcmsr/cmr/define.h"
+#include "dcmtk/dcmsr/cmr/cid4020.h"
+#include "dcmtk/dcmsr/cmr/cid4021.h"
+#include "dcmtk/dcmsr/cmr/srnumvl.h"
 
 
-/*-----------------------*
+// include this file in doxygen documentation
+
+/** @file tid1600.h
+ *  @brief Interface class and error constants for TID 1600 in module dcmsr/cmr
+ */
+
+
+/*------------------------*
  *  constant definitions  *
- *-----------------------*/
+ *------------------------*/
 
 /** @name specific error conditions for TID 1600 in module dcmsr/cmr
  */
 //@{
 
+/// error: there is no image library to add image groups to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibrary;
 /// error: there is no image library group to add image entries to
 extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibraryGroup;
+/// error: there is no image library entry to add descriptors to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibraryEntry;
 /// error: cannot add multiple image library entry descriptors (see TID 1600 Row 3)
 extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors;
+/// error: the current (most recently added) image library entry has no modality descriptor
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_MissingImageLibraryEntryDescriptorModality;
+/// error: the current (most recently added) image library entry has the wrong modality descriptor
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_WrongImageLibraryEntryDescriptorModality;
+/// normal: there are no image library entry descriptors to be added (copied from the dataset)
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded;
 
 //@}
 
@@ -62,9 +82,36 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
         withAllDescriptors
     };
 
-    /** default constructor
+    /** (default) constructor
+     ** @param  createLibrary  flag indicating whether to create an empty image library
+     *                         by calling createImageLibrary() during startup (default)
+     */
+    TID1600_ImageLibrary(const OFBool createLibrary = OFTrue);
+
+    /** check whether the current internal state is valid.
+     *  That means, whether the base class is valid and hasImageLibrary() returns true.
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    virtual OFBool isValid() const;
+
+    /** check whether the content item 'Image Library' (TID 1600 - Row 1) is present.
+     *  Initially, this mandatory content item is created by the constructor of this
+     *  class (if not disabled).  After clear() has been called, it can be created again
+     *  by calling createNewImageLibrary().
+     ** @return OFTrue if the image library is present, OFFalse otherwise
+     */
+    OFBool hasImageLibrary() const;
+
+    /** check whether there is an image group in this image library (TID 1600 - Row 2)
+     ** @return OFTrue if at least one image group is present, OFFalse otherwise
+     */
+    OFBool hasImageLibraryGroup() const;
+
+    /** clear the internally stored tree of content items and create the mandatory
+     *  content item 'Image Library' (TID 1600 - Row 1) as the root node of this template
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    TID1600_ImageLibrary();
+    OFCondition createNewImageLibrary();
 
     /** add an image group to the image library
      ** @return status, EC_Normal if successful, an error code otherwise
@@ -74,6 +121,8 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
     /** add an image entry to the current image group, i.e.\ add content items for
      *  TID 1601 (Image Library Entry).  The values of the content items (including
      *  the image reference) are copied from the data elements of the given 'dataset'.
+     *  If no descriptors were added, CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded
+     *  is returned.
      ** @param  dataset  DICOM dataset from which the values should be copied
      *  @param  mode     mode specifying which optional content items are to be added
      *  @param  check    if enabled, check values for validity before setting them
@@ -84,10 +133,11 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                               const AddImageMode mode = withoutDescriptors,
                               const OFBool check = OFTrue);
 
-    /** add an image entry descriptors to the current image group, i.e.\ add content
+    /** add image entry descriptors to the current image group, i.e.\ add content
      *  items for TID 1602 (Image Library Entry Descriptors) and included templates.
      *  The values of the content items are copied from the data elements of the given
-     *  'dataset'.
+     *  'dataset'.  If none were added, CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded
+     *  is returned.
      *  Please note that this method should only be called once for each image group.
      ** @param  dataset  DICOM dataset from which the values should be copied
      *  @param  check    if enabled, check values for validity before setting them
@@ -97,9 +147,93 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
     OFCondition addImageEntryDescriptors(DcmItem &dataset,
                                          const OFBool check = OFTrue);
 
+    /** go to the most recently added image library entry and get the value of the
+     *  descriptor 'Modality' (TID 1602 - Row 1)
+     ** @param  modalityCode  reference to coded entry that will store the result
+     *                        (cleared if an error occurs)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getImageEntryModality(DSRCodedEntryValue &modalityCode);
+
+  // --- set modality-specific content manually ---
+
+    /** set the value of the descriptor 'Radionuclide' (TID 1607 - Row 1) for the current
+     *  (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  radionuclide  coded entry to be set (from CID 4020 - PET Radionuclide)
+     *  @param  check         if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadionuclide(const CID4020_PETRadionuclide &radionuclide,
+                                        const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Agent' (TID 1607 - Row 2)
+     *  for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  agent  coded entry to be set (from CID 4021 - PET Radiopharmaceutical)
+     *  @param  check  if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalAgent(const CID4021_PETRadiopharmaceutical &agent,
+                                                    const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Start Date Time' (TID 1607 -
+     *  Row 4) for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  dateTime  date/time value to be set (associated DICOM VR=DT)
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalStartDateTime(const OFString &dateTime,
+                                                            const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Stop Date Time' (TID 1607 -
+     *  Row 5) for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  dateTime  date/time value to be set (associated DICOM VR=DT)
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalStopDateTime(const OFString &dateTime,
+                                                           const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Volume' (TID 1607 - Row 6)
+     *  for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  volume  numeric measurement value to be set (measurement unit should be
+     *                  CODE_UCUM_cm3 or a coded entry that is identical to this)
+     *  @param  check   if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalVolume(const CMR_SRNumericMeasurementValue &volume,
+                                                     const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Total Dose' (TID 1607 -
+     *  Row 7) for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  totalDose  numeric measurement value to be set (measurement unit should
+     *                     be CODE_UCUM_Bq or a coded entry that is identical to this)
+     *  @param  check      if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadionuclideTotalDose(const CMR_SRNumericMeasurementValue &totalDose,
+                                                 const OFBool check = OFTrue);
+
 
   protected:
 
+    /** create the mandatory content item 'Image Library' (TID 1600 - Row 1) as the root
+     *  node of this template.  It is expected that the tree is currently empty.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createImageLibrary();
+
     /** add image library entry descriptors (TID 1602) to given document subtree.
      *  This method also calls addModalitySpecificDescriptors() in order to add the
      *  included templates (TID 1603 to 1607).
@@ -169,7 +303,7 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                 const OFBool check);
 
     /** add image library entry descriptors for PET (TID 1607).
-     *  @note The template rows 9 to 14 are not yet supported by this method.
+     *  @note The template rows 10 to 15 are not yet supported by this method.
      ** @param  tree     subtree to which the content items should be added
      *  @param  dataset  DICOM dataset from which the values should be copied
      *  @param  check    if enabled, check values for validity before setting them
@@ -179,6 +313,62 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                          DcmItem &dataset,
                                                          const OFBool check);
 
+    /** go to the most recently added image library entry and check the value of the
+     *  descriptor 'Modality' (TID 1602 - Row 1)
+     ** @param  modalityCode  coded entry (from CID 29) associated with the modality.
+     *                        Used to check the image library entry.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition goAndCheckImageLibraryEntry(const DSRCodedEntryValue &modalityCode);
+
+    /** search for a particular content item (given by the concept name and value type)
+     *  and set its string value.  If not found, a new content item is added to the
+     *  current position and the value is set.
+     ** @param  valueType       value type of the content item to be set/added
+     *  @param  conceptName     concept name of the content item to be set/added
+     *  @param  stringValue     string value of the content item to be set/added
+     *  @param  annotationText  text used to annotate the content item (might be empty)
+     *  @param  check           if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setStringContentItemFromValue(const E_ValueType valueType,
+                                              const DSRCodedEntryValue &conceptName,
+                                              const OFString &stringValue,
+                                              const OFString &annotationText,
+                                              const OFBool check);
+
+    /** search for a particular CODE content item (given by the concept name) and set its
+     *  coded entry value.  If not found, a new content item is added to the current
+     *  position and the value is set.
+     ** @param  conceptName     concept name of the content item to be set/added
+     *  @param  codeValue       coded entry value of the content item to be set/added
+     *  @param  annotationText  text used to annotate the content item (might be empty)
+     *  @param  check           if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setCodeContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                            const DSRCodedEntryValue &codeValue,
+                                            const OFString &annotationText,
+                                            const OFBool check);
+
+    /** search for a particular NUM content item (given by the concept name) and set its
+     *  numeric measurement value.  If not found, a new content item is added to the
+     *  current position and the value is set.
+     ** @param  conceptName      concept name of the content item to be set/added
+     *  @param  numericValue     numeric measurement value of the content item to be
+     *                           set/added
+     *  @param  measurementUnit  measurement unit that should be used by 'numericValue'
+     *                           (optional, might be empty).  Used for checking purposes.
+     *  @param  annotationText   text used to annotate the content item (might be empty)
+     *  @param  check            if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setNumericContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                               const DSRNumericMeasurementValue &numericValue,
+                                               const DSRCodedEntryValue &measurementUnit,
+                                               const OFString &annotationText,
+                                               const OFBool check);
+
   // --- static helper functions ---
 
     /** add a content item with a string value copied from the given dataset.
@@ -204,7 +394,7 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                        const OFString &annotationText,
                                                        const OFBool check);
 
-    /** add a content item with a coded entry value copied from the given dataset.
+    /** add a CODE content item with a coded entry value copied from the given dataset.
      *  The content item is only created and added to the subtree if the specified code
      *  sequence is present in the 'dataset' and its value is valid (not empty).
      ** @param  tree            subtree to which the content items should be added
@@ -223,7 +413,7 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                      const OFString &annotationText,
                                                      const OFBool check);
 
-    /** add a content item with a numeric value copied from the given dataset.
+    /** add a NUM content item with a numeric value copied from the given dataset.
      *  The content item is only created and added to the subtree if the specified data
      *  element is present in the 'dataset' and its value (retrieved as a string) is not
      *  empty.
@@ -247,8 +437,15 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                         const DSRCodedEntryValue &measurementUnit,
                                                         const OFString &annotationText,
                                                         const OFBool check);
-
 };
 
 
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the SR template class
+typedef TID1600_ImageLibrary CMR_TID1600;
+
+
 #endif
index e56cc788af7a1044edc445dc5f215e576cb658ad..7654c10513a6909017b7e7bd6b2ae3dfda2b8c66 100644 (file)
@@ -1,12 +1,13 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file with DICOM Code Definitions (Coding Scheme "DCM", Version "01")
  *
  *  Generated automatically from DICOM PS 3.16-2015c
  *  File created on 2015-08-23 14:58:58 by J. Riesmeier
+ *  Last modified on 2016-01-25 by Riesmeier
  *
  */
 
 #define CODE_DCM_IEC61217GantryContinuousPitchAngle                        DSRBasicCodedEntry("126810", "DCM", "IEC61217 Gantry Continuous Pitch Angle")
 #define CODE_DCM_IEC61217GantryContinuousYawAngle                          DSRBasicCodedEntry("126811", "DCM", "IEC61217 Gantry Continuous Yaw Angle")
 
+// recently approved correction items
+
+#define CODE_DCM_StationAETitle                                            DSRBasicCodedEntry("110119", "DCM", "Station AE Title")   // added from CP-1516
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h
new file mode 100644 (file)
index 0000000..40ea784
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file with NCIt Code Definitions (Coding Scheme "NCIt")
+ *
+ *  Generated semi-automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-12 18:02:09 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CODES_NCIT_H
+#define CODES_NCIT_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrcodvl.h"
+
+
+/*-----------------------*
+ *  general information  *
+ *-----------------------*/
+
+#define CODE_NCIt_CodingSchemeDesignator  "NCIt"
+#define CODE_NCIt_CodingSchemeName        "NCIt"
+#define CODE_NCIt_CodingSchemeDescription "NCI Thesaurus"
+#define CODE_NCIt_CodingSchemeUID         "2.16.840.1.113883.3.26.1.1"
+
+
+/*--------------------*
+ *  code definitions  *
+ *--------------------*/
+
+// total number of codes: 2
+// - retired: 0
+// - no name: 0
+// - not unique: 0
+
+// The basic scheme for creating the names is as follows:
+//   'CODE_' + <coding-scheme-designator> + ['_RETIRED'] + '_' + <code-name>
+// where <coding-scheme-designator> is "NCIt" and <code-name> is either
+// - a cleaned camel-case version of the code meaning (if unique within this coding scheme) or
+// - a cleaned camel-case version of the code meaning with an underscore and the code value appended or
+// - simply the code value with an underscore character appended (if code meaning contains an equation).
+// The "cleaned camel-case version of the code meaning" is an attempt to map the free text
+// description of the code meaning to a compiler-friendly but still human-readable representation.
+
+#define CODE_NCIt_RANO             DSRBasicCodedEntry("C114879", "NCIt", "RANO")
+#define CODE_NCIt_ActivitySession  DSRBasicCodedEntry("C67447", "NCIt", "Activity Session")   // added from CP-1466
+
+#endif
index e303995d44d002e3bacd63432a700e58b1a698bf..081764f7dcbc08a848f02040f94b3e79dde87c73 100644 (file)
@@ -1,11 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *
  *  Header file with SNOMED-RT Code Definitions (Coding Scheme "SRT")
  *
  *  Generated semi-automatically from DICOM PS 3.16-2015c
  *  File created on 2015-08-24 by J. Riesmeier
+ *  Last modified on 2016-01-23 by Riesmeier
  *
  */
 
 // description of the code meaning to a compiler-friendly but still human-readable representation.
 
 #define CODE_SRT_Radionuclide                   DSRBasicCodedEntry("C-10072", "SRT", "Radionuclide")
+#define CODE_SRT_18_Fluorine                    DSRBasicCodedEntry("C-111A1", "SRT", "^18^Fluorine")
+#define CODE_SRT_Fluorodeoxyglucose_F18         DSRBasicCodedEntry("C-B1031", "SRT", "Fluorodeoxyglucose F^18^")
 #define CODE_SRT_RadiopharmaceuticalAgent       DSRBasicCodedEntry("F-61FDB", "SRT", "Radiopharmaceutical agent")
-#define CODE_SRT_HalfLifeOfRadiopharmaceutical  DSRBasicCodedEntry("R-42806", "SRT", "Half-life of radiopharmaceutical")
+#define CODE_SRT_MeasurementMethod              DSRBasicCodedEntry("G-C036", "SRT", "Measurement Method")
+#define CODE_SRT_FindingSite                    DSRBasicCodedEntry("G-C0E3", "SRT", "Finding Site")
 #define CODE_SRT_RouteOfAdministration          DSRBasicCodedEntry("G-C340", "SRT", "Route of Administration")
+#define CODE_SRT_Neoplasm_Primary               DSRBasicCodedEntry("M-80003", "SRT", "Neoplasm, Primary")
+#define CODE_SRT_Neoplasm_Secondary             DSRBasicCodedEntry("M-80006", "SRT", "Neoplasm, Secondary")
+#define CODE_SRT_HalfLifeOfRadiopharmaceutical  DSRBasicCodedEntry("R-42806", "SRT", "Half-life of radiopharmaceutical")
+#define CODE_SRT_AorticArch                     DSRBasicCodedEntry("T-42300", "SRT", "Aortic arch")
+#define CODE_SRT_Liver_T62000                   DSRBasicCodedEntry("T-62000", "SRT", "Liver")
+#define CODE_SRT_Liver_T62002                   DSRBasicCodedEntry("T-62002", "SRT", "Liver")
+#define CODE_SRT_Cerebellum                     DSRBasicCodedEntry("T-A6000", "SRT", "Cerebellum")
+#define CODE_SRT_LymphNode                      DSRBasicCodedEntry("T-C4000", "SRT", "Lymph node")
 
 #endif
index ef8653011a00b71d9996124d7e3b55366de40603..d057e647a71bf27cabbdcc3363137c82690225e8 100644 (file)
@@ -1,11 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *
  *  Header file with UCUM Code Definitions (Coding Scheme "UCUM")
  *
  *  Generated semi-automatically from DICOM PS 3.16-2015c
  *  File created on 2015-08-24 by J. Riesmeier
+ *  Last modified on 2016-01-23 by Riesmeier
  *
  */
 
 // description of the code meaning to a compiler-friendly but still human-readable representation.
 
 #define CODE_UCUM_Pixels            DSRBasicCodedEntry("{pixels}", "UCUM", "pixels")
-#define CODE_UCUM_Degrees           DSRBasicCodedEntry("deg", "UCUM", "degrees")
+#define CODE_UCUM_Degrees           DSRBasicCodedEntry("deg", "UCUM", "deg")
 #define CODE_UCUM_Minus1To1         DSRBasicCodedEntry("{-1:1}", "UCUM", "{-1:1}")
 #define CODE_UCUM_Millimeter        DSRBasicCodedEntry("mm", "UCUM", "millimeter")
-#define CODE_UCUM_Cm3               DSRBasicCodedEntry("cm3", "UCUM", "cm3")
-#define CODE_UCUM_S                 DSRBasicCodedEntry("s", "UCUM", "s")
-#define CODE_UCUM_Min               DSRBasicCodedEntry("min", "UCUM", "min")
+#define CODE_UCUM_cm3               DSRBasicCodedEntry("cm3", "UCUM", "cm3")
+#define CODE_UCUM_ml                DSRBasicCodedEntry("ml", "UCUM", "ml")
+#define CODE_UCUM_s                 DSRBasicCodedEntry("s", "UCUM", "s")
+#define CODE_UCUM_min               DSRBasicCodedEntry("min", "UCUM", "min")
 #define CODE_UCUM_Bq                DSRBasicCodedEntry("Bq", "UCUM", "Bq")
 #define CODE_UCUM_BqPerMol          DSRBasicCodedEntry("Bq/mol", "UCUM", "Bq/mol")
-#define CODE_UCUM_MmolPerL          DSRBasicCodedEntry("mmol/l", "UCUM", "mmol/l")
+#define CODE_UCUM_mmolPerL          DSRBasicCodedEntry("mmol/l", "UCUM", "mmol/l")
 #define CODE_UCUM_CountsPerSecond   DSRBasicCodedEntry("{counts}/s", "UCUM", "Counts per second")
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/umls.h b/dcmsr/include/dcmtk/dcmsr/codes/umls.h
new file mode 100644 (file)
index 0000000..047bc51
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *
+ *  Header file with UMLS Code Definitions (Coding Scheme "UMLS")
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2015-08-23 14:59:04 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CODES_UMLS_H
+#define CODES_UMLS_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrcodvl.h"
+
+
+/*-----------------------*
+ *  general information  *
+ *-----------------------*/
+
+#define CODE_UMLS_CodingSchemeDesignator  "UMLS"
+#define CODE_UMLS_CodingSchemeName        "UMLS"
+#define CODE_UMLS_CodingSchemeDescription "UMLS codes as CUIs making up the values in a coding system"
+#define CODE_UMLS_CodingSchemeUID         "2.16.840.1.113883.6.86"
+
+
+/*--------------------*
+ *  code definitions  *
+ *--------------------*/
+
+// total number of codes: 22
+// - retired: 0
+// - no name: 0
+// - not unique: 0
+
+// The basic scheme for creating the names is as follows:
+//   'CODE_' + <coding-scheme-designator> + ['_RETIRED'] + '_' + <code-name>
+// where <coding-scheme-designator> is "UMLS" and <code-name> is either
+// - a cleaned camel-case version of the code meaning (if unique within this coding scheme) or
+// - a cleaned camel-case version of the code meaning with an underscore and the code value appended or
+// - simply the code value with an underscore character appended (if code meaning contains an equation).
+// The "cleaned camel-case version of the code meaning" is an attempt to map the free text
+// description of the code meaning to a compiler-friendly but still human-readable representation.
+
+#define CODE_UMLS_QualitativeEvaluations                     DSRBasicCodedEntry("C0034375", "UMLS", "Qualitative Evaluations")
+#define CODE_UMLS_UnknownPrimaryNeoplasiaSite                DSRBasicCodedEntry("C0221297", "UMLS", "unknown primary neoplasia site")
+#define CODE_UMLS_CoefficientOfVariance                      DSRBasicCodedEntry("C0681921", "UMLS", "Coefficient of Variance")
+#define CODE_UMLS_Intern                                     DSRBasicCodedEntry("C1144859", "UMLS", "Intern")
+#define CODE_UMLS_ConsultingPhysician                        DSRBasicCodedEntry("C1441532", "UMLS", "Consulting Physician")
+#define CODE_UMLS_Baseline                                   DSRBasicCodedEntry("C1442488", "UMLS", "Baseline")
+#define CODE_UMLS_Fluoroetanidazole_F18                      DSRBasicCodedEntry("C1541539", "UMLS", "Fluoroetanidazole F^18^")
+#define CODE_UMLS_Unscheduled                                DSRBasicCodedEntry("C1699701", "UMLS", "Unscheduled")
+#define CODE_UMLS_Nadir                                      DSRBasicCodedEntry("C1708760", "UMLS", "Nadir")
+#define CODE_UMLS_MedicalPhysicist                           DSRBasicCodedEntry("C1708969", "UMLS", "Medical Physicist")
+#define CODE_UMLS_Referring                                  DSRBasicCodedEntry("C1709880", "UMLS", "Referring")
+#define CODE_UMLS_Variance                                   DSRBasicCodedEntry("C1711260", "UMLS", "Variance")
+#define CODE_UMLS_Tyrosine3Octreotate_Ga68                   DSRBasicCodedEntry("C1742831", "UMLS", "tyrosine-3-octreotate Ga^68^")
+#define CODE_UMLS_Fluoroestradiol_FES_F18                    DSRBasicCodedEntry("C1831937", "UMLS", "Fluoroestradiol (FES) F^18^")
+#define CODE_UMLS_Sonographer                                DSRBasicCodedEntry("C1954848", "UMLS", "Sonographer")
+#define CODE_UMLS_RootMeanSquare                             DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square")
+#define CODE_UMLS_TimePoint                                  DSRBasicCodedEntry("C2348792", "UMLS", "Time Point")
+#define CODE_UMLS_Edotreotide_Ga68                           DSRBasicCodedEntry("C2713594", "UMLS", "Edotreotide Ga^68^")
+#define CODE_UMLS_FluoropropylDihydrotetrabenazine_DTBZ_F18  DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^")
+#define CODE_UMLS_ISO1_F18                                   DSRBasicCodedEntry("C2981788", "UMLS", "ISO-1 F^18^")
+#define CODE_UMLS_RadiationPhysicist                         DSRBasicCodedEntry("C2985483", "UMLS", "Radiation Physicist")
+#define CODE_UMLS_Pretreatment                               DSRBasicCodedEntry("C3539075", "UMLS", "Pretreatment")
+
+#endif
index f123d4c1101619809a8a92d6b9f66936ce68ca70..08c80714aa49543786ac2193a464f08b99f4ba24 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2014, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define DCMTK_DCMSR_EXPORT DCMTK_DECL_IMPORT
 #endif
 
+#ifndef DCMTK_EXPLICIT_SPECIALIZATION
+#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
+#define DCMTK_EXPLICIT_SPECIALIZATION template<>
+#else
+#define DCMTK_EXPLICIT_SPECIALIZATION
+#endif
+#endif
+
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsracqcc.h b/dcmsr/include/dcmtk/dcmsr/dsracqcc.h
new file mode 100644 (file)
index 0000000..da6b2b1
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ *
+ *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRAcquisitionContextConstraintChecker
+ *
+ */
+
+
+#ifndef DSRACQCC_H
+#define DSRACQCC_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsriodcc.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class for checking the relationship content constraints of the Acquisition Context
+ *  SR IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 8001
+ *  (Preclinical Small Animal Image Acquisition Context) invoked at the root node.
+ *  Note: This IOD may be used with other Templates defined for Acquisition Context."
+ */
+class DCMTK_DCMSR_EXPORT DSRAcquisitionContextConstraintChecker
+  : public DSRIODConstraintChecker
+{
+
+  public:
+
+    /** default constructor
+     */
+    DSRAcquisitionContextConstraintChecker();
+
+    /** destructor
+     */
+    virtual ~DSRAcquisitionContextConstraintChecker();
+
+    /** check whether by-reference relationships are allowed for this SR IOD
+     ** @return always returns OFFalse, i.e. by-reference relationships are not allowed
+     */
+    virtual OFBool isByReferenceAllowed() const;
+
+    /** check whether this SR IOD requires template support
+     ** @return always returns OFFalse, i.e. template support is not required
+     */
+    virtual OFBool isTemplateSupportRequired() const;
+
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
+
+    /** get the associated document type of the SR IOD
+     ** @return document type (DSRTypes::DT_AcquisitionContextSR)
+     */
+    virtual E_DocumentType getDocumentType() const;
+
+    /** check whether specified content relationship is allowed for this IOD
+     ** @param  sourceValueType   value type of the source content item to be checked
+     *  @param  relationshipType  type of relationship between source and target item
+     *  @param  targetValueType   value type of the target content item to be checked
+     *  @param  byReference       optional flag indicating whether the node/relationship
+     *                            should be added by-value (default) or by-reference
+     ** @return OFTrue if content relationship is allowed, OFFalse otherwise
+     */
+    virtual OFBool checkContentRelationship(const E_ValueType sourceValueType,
+                                            const E_RelationshipType relationshipType,
+                                            const E_ValueType targetValueType,
+                                            const OFBool byReference = OFFalse) const;
+};
+
+
+#endif
index 534c4e28876096372b04d246c21b3e4fb84bfe34..2d9e599c93318d91b7066b136b49f0e48cf9da38 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRBasicTextSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_BasicTextSR)
index ddfee7b7987bacb724e5a0b24683bcdb2a3d7865..e2c75179600d96a910c47789dfe98adefa88ac2d 100644 (file)
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRComprehensive3DSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_Comprehensive3DSR)
index 9fe63f047d8a8a7eb653cc96b7e2badeafbb3c32..b1b775c67afaeee739e733bd4d034d975f428070 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Chest CAD SR IOD
+/** Class for checking the relationship content constraints of the Chest CAD SR IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 4100
+ *  (Chest CAD Document Root) invoked at the root node.  When a content item sub-tree
+ *  from a prior document is duplicated by-value, its observation context shall be
+ *  defined by TID 1001 (Observation Context) and its subordinate templates."
  */
 class DCMTK_DCMSR_EXPORT DSRChestCadSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +63,14 @@ class DCMTK_DCMSR_EXPORT DSRChestCadSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "4100"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ChestCadSR)
index 9cd4606385006561cc882b09f44216985122afbf..0a61c88a4fc8ed6f5fdf6aa489b8dad6023ba781 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -198,7 +198,7 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     DSRCodedEntryValue &operator=(const DSRCodedEntryValue &codedEntryValue);
 
-    /** comparison operator.
+    /** comparison operator "equal".
      *  Two codes are equal if the code value, coding scheme designator and the (optional)
      *  coding scheme version are equal.  The code meaning is not relevant for this check.
      ** @param  codedEntryValue  code which should be compared to the current one
@@ -206,7 +206,16 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     OFBool operator==(const DSRCodedEntryValue &codedEntryValue) const;
 
-    /** comparison operator.
+    /** comparison operator "not equal".
+     *  Two codes are not equal if either the code value or the coding scheme designator
+     *  or the (optional) coding scheme version are not equal.  The code meaning is not
+     *  relevant for this check.
+     ** @param  codedEntryValue  code which should be compared to the current one
+     ** @return OFTrue if both codes are not equal, OFFalse otherwise
+     */
+    OFBool operator!=(const DSRCodedEntryValue &codedEntryValue) const;
+
+    /** comparison operator "equal".
      *  Two codes are equal if the code value, coding scheme designator and the (optional)
      *  coding scheme version are equal.  The code meaning is not relevant for this check.
      ** @param  basicCodedEntry  code which should be compared to the current one
@@ -214,6 +223,15 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     OFBool operator==(const DSRBasicCodedEntry &basicCodedEntry) const;
 
+    /** comparison operator "not equal".
+     *  Two codes are not equal if either the code value or the coding scheme designator
+     *  or the (optional) coding scheme version are not equal.  The code meaning is not
+     *  relevant for this check.
+     ** @param  basicCodedEntry  code which should be compared to the current one
+     ** @return OFTrue if both codes are not equal, OFFalse otherwise
+     */
+    OFBool operator!=(const DSRBasicCodedEntry &basicCodedEntry) const;
+
     /** clear all internal variables.
      *  Since an empty code is invalid the code becomes invalid afterwards.
      */
@@ -231,6 +249,14 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     virtual OFBool isEmpty() const;
 
+    /** check whether the current code is complete, i.e.\ whether the three mandatory
+     *  components of the code are non-empty.  This is just a basic check that might be useful
+     *  for "validating" input data.  See isValid() for a more sophisticated way of checking
+     *  the current code.
+     ** @return OFTrue if code is complete, OFFalse otherwise
+     */
+    virtual OFBool isComplete() const;
+
     /** print code.
      *  The output of a typical code triple looks like this: (1234,99_OFFIS_DCMTK,"Code
      *  Meaning").  The optional coding scheme version is printed in square brackets directly
@@ -710,4 +736,15 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
 };
 
 
+/** output stream operator for coded entry values.
+ *  Internally, the DSRCodedEntryValue::print() method is used, i.e. the output looks
+ *  like this: (1234,99_OFFIS_DCMTK,"Code Meaning") or (cm,UCUM[1.4],"centimeter")
+ *  @param  stream           output stream to which the coded entry value is printed
+ *  @param  codedEntryValue  coded entry value to be printed
+ *  @return reference to output stream
+ */
+DCMTK_DCMSR_EXPORT STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                                     const DSRCodedEntryValue& codedEntryValue);
+
+
 #endif
index 77c190193442bfdeb6a2ca1a21bce35fd1a7e3b6..7daa2424e88a56ee8e2e589363791d56347b26ad 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,9 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Colon CAD SR IOD
+/** Class for checking the relationship content constraints of the Colon CAD SR IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 4120
+ *  (Colon CAD Document Root) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRColonCadSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +61,14 @@ class DCMTK_DCMSR_EXPORT DSRColonCadSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "4120"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ColonCadSR)
index cdada30d6c3fa57089d85e3cbe28399d664fd19f..d35a8ca153fa318dd178244d0d7691486d356c01 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRComprehensiveSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ComprehensiveSR)
index 179de0b0b2a449f75c2b0b6703e94cbf25314b31..896c7c1a4834287340f36aa43c46bf31a434333e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -89,11 +89,19 @@ class DCMTK_DCMSR_EXPORT DSRCompositeReferenceValue
     virtual OFBool isValid() const;
 
     /** check whether the current reference value is empty.
-     *  Checks whether both UIDs of the reference value are empty.
+     *  Checks whether both mandatory UIDs of the reference value are empty.
      ** @return OFTrue if value is empty, OFFalse otherwise
      */
     virtual OFBool isEmpty() const;
 
+    /** check whether the current reference value is complete, i.e.\ whether both
+     *  mandatory UIDs are non-empty.  This is just a basic check that might be useful
+     *  for "validating" input data.  See isValid() for a more sophisticated way of
+     *  checking the current reference value.
+     ** @return OFTrue if value is complete, OFFalse otherwise
+     */
+    virtual OFBool isComplete() const;
+
     /** print reference value.
      *  The output of a typical composite reference value looks like this: (BasicTextSR,"1.2.3").
      *  If the SOP class UID is unknown, the UID is printed instead of the related name.
@@ -168,6 +176,13 @@ class DCMTK_DCMSR_EXPORT DSRCompositeReferenceValue
         return SOPClassUID;
     }
 
+    /** get name associated with the SOP class UID (if any)
+     ** @param  defaultName  string value that is returned if the SOP class UID is unknown
+     ** @return name associated with the current SOP class UID (might be empty, e.g. in case
+     *          the SOP class UID is empty or 'defaultName' is an empty string)
+     */
+    const OFString getSOPClassName(const OFString &defaultName = "unknown SOP Class UID") const;
+
     /** get SOP instance UID
      ** @return current SOP instance UID (might be invalid or an empty string)
      */
index 4b0e797a63470a4f70a7f0b87cb8d3552bbd6473..4ab55f45dcbba9d0a7d026d6b36ddaafe89025b1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -27,6 +27,7 @@
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmsr/dsrtypes.h"
+#include "dcmtk/dcmsr/dsrdoctn.h"
 
 
 /*-----------------------*
@@ -48,6 +49,10 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
 
   public:
 
+    /** clear non-static member variables
+     */
+    virtual void clear();
+
     /** check whether template identification is set
      ** @return OFTrue if set, OFFalse otherwise
      */
@@ -68,6 +73,17 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
         return ExtensibleMode;
     }
 
+    /** compare template identification with given values
+     ** @param  templateIdentifier  template identifier to compare with
+     *  @param  mappingResource     mapping resource that defines the template
+     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
+     *                              Not used for comparison if the value is empty.
+     ** @result OFTrue if template identification is identical, OFFalse otherwise
+     */
+    virtual OFBool compareTemplateIdentication(const OFString &templateIdentifier,
+                                               const OFString &mappingResource,
+                                               const OFString &mappingResourceUID = "") const;
+
     /** get template identifier
      ** @return identifier of the template
      */
@@ -116,11 +132,19 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
      */
     virtual ~DSRTemplateCommon();
 
+    /** clear all entries in the list of node IDs, i.e.\ set them to their initial value,
+     *  which is 0
+     */
+    void clearEntriesInNodeList();
+
     /** reserve a certain number of entries in the list of node IDs.  Using this method
      *  can help to avoid unwanted memory allocations and copying of list entries.
-     ** @param  count  number of entries to be reserved (for later use)
+     ** @param  count       number of entries to be reserved (for later use)
+     *  @param  initialize  initialize all entries with a value of 0 if OFTrue, just
+     *                      reserve but do not create them otherwise (default)
      */
-    void reserveEntriesInNodeList(const size_t count);
+    void reserveEntriesInNodeList(const size_t count,
+                                  const OFBool initialize = OFFalse);
 
     /** store given entry at a certain position in the list of node IDs
      ** @param  pos     index of the list entry to use for storage (starting from 0)
@@ -135,6 +159,15 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
      */
     size_t getEntryFromNodeList(const size_t pos) const;
 
+    /** set given cursor to a specific node
+     ** @param  cursor  reference to document tree node cursor that is used to start
+     *                  searching the node from and that is set afterwards
+     *  @param  pos     index of the list entry that stores the ID of the node
+     ** @return ID of the new current node within the tree if successful, 0 otherwise
+     */
+    size_t gotoEntryFromNodeList(DSRDocumentTreeNodeCursor &cursor,
+                                 const size_t pos) const;
+
     /** set internal cursor of a given document tree to a specific node
      ** @param  tree  pointer to document tree where nodes and cursor are stored
      *  @param  pos   index of the list entry that stores the ID of the node
@@ -149,12 +182,14 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
      *  entry with a non-zero value (valid node ID) is found or the first list entry
      *  is reached.  This approach in particular supports handling of template tables
      *  where the order of content items is significant.
-     ** @param  tree     pointer to document tree where nodes and cursor are stored
-     *  @param  lastPos  index of the last node list entry to start searching from
+     ** @param  tree      pointer to document tree where nodes and cursor are stored
+     *  @param  lastPos   index of the last node list entry to start searching from
+     *  @param  firstPos  optional index of the node list entry to stop searching
      ** @return ID of the new current node within the tree if successful, 0 otherwise
      */
     size_t gotoLastEntryFromNodeList(DSRDocumentSubTree *tree,
-                                     const size_t lastPos);
+                                     const size_t lastPos,
+                                     const size_t firstPos = 0);
 
 
   private:
index 326ad972c8e23dec6115f1e829feb5e215e223cd..a82c56c145cd7fa4fb0611049694ae91b31b4b41 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -57,7 +57,7 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
     /** check whether context group is extensible
      ** @return OFTrue if extensible, OFFalse otherwise
      */
-    virtual OFBool isExtensible() const
+    inline OFBool isExtensible() const
     {
         return ExtensibleMode;
     }
@@ -65,7 +65,7 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
     /** change mode specifying whether the context group is extensible or non-extensible
      ** @param  mode  set context group type to extensible if OFTrue (default)
      */
-    virtual void setExtensible(const OFBool mode = OFTrue)
+    inline void setExtensible(const OFBool mode = OFTrue)
     {
         ExtensibleMode = mode;
     }
@@ -150,6 +150,12 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
      */
     virtual OFCondition findCodedEntry(const DSRCodedEntryValue &codedEntryValue) const;
 
+    /** check whether this context group has any extended coded entries.
+     *  Extended coded entries are those non-standard codes added by addCodedEntry().
+     ** @return OFTrue if there are any extended coded entries, OFFalse otherwise
+     */
+    virtual OFBool hasExtendedCodedEntries() const;
+
     /** add a coded entry to this context group as an extension, i.e.\ as a non-standard
      *  code.  Adding a new coded entry by this method only works for extensible context
      *  groups.  Please note that the 'codedEntryValue' is not checked for validity.
@@ -235,7 +241,7 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
                                        DSRCodedEntryValue *foundCodedEntry,
                                        const OFBool enhancedEncodingMode = OFFalse) const;
 
-    /** check whether the currently selected coded entry is valid.
+    /** check whether a given coded entry is valid.
      *  Internally, the method hasCodedEntry() is used if 'definedContextGroup' is OFTrue.
      ** @param  codedEntryValue      coded entry to be checked
      *  @param  definedContextGroup  flag indicating whether this context group is used as
index fccbee4aa6e08c361534c87e0cd836c315fa2fa4..b44d9521bf60b584a7b424986e391da7a85fc09f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -212,7 +212,8 @@ class DCMTK_DCMSR_EXPORT DSRDocument
      *  Replace the currently stored document tree with the given one.  Please note that the
      *  given 'tree' is checked before setting it, i.e. only a valid document tree is accepted.
      *  However, a new SOP instance is never created.  If needed, this has to be done with
-     *  createNewSOPInstance() in addition to or with createNewDocument() before this method.
+     *  createNewSOPInstance() in addition to or with createNewDocument() before this method
+     *  is called.
      ** @param  tree  document tree to be set (content will be copied)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -220,21 +221,26 @@ class DCMTK_DCMSR_EXPORT DSRDocument
 
     /** set document tree from root template.
      *  Replace the currently stored document tree with the one from the given root template.
-     *  This is just a convenience function, so the additional comments on the above setTree()
-     *  method also apply.
+     *  By default, this method expands the tree, i.e. instances of DSRIncludedTemplateTreeNode
+     *  that were added to the tree with DSRDocumentSubTree::includeTemplate() are replaced by
+     *  their content, i.e. by the internally managed subtree.
+     *  Please note that the additional comments on the above setTree() method also apply.
      ** @param  rootTemplate  template specifying the document tree to be set (content will be
      *                        copied).  This parameter cannot be "const" because of
      *                        DSRRootTemplate::getTree(), which is called internally and which
      *                        modifies the tree.
+     *  @param  expandTree    optional flag that allows for disabling the expanding of the
+     *                        document tree before setting it.  Please note that various
+     *                        output methods like write() or renderHTML() do not yet work on
+     *                        such trees.
      ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setTreeFromRootTemplate(DSRRootTemplate &rootTemplate);
+    virtual OFCondition setTreeFromRootTemplate(DSRRootTemplate &rootTemplate,
+                                                const OFBool expandTree = OFTrue);
 
     /** get specific character set type.
-     *  If the type is unknown the original DICOM defined term can be retrieved
-     *  with the method getSpecificCharacterSet().  Please note that only the
-     *  first of possibly multiple values is used to determine the type from the
-     *  given DICOM code string (multiple character sets are not yet supported).
+     *  If the type is unknown, the original DICOM defined term can be retrieved
+     *  with the method getSpecificCharacterSet().
      ** @return character set (might be CS_invalid/unknown if not supported)
      */
     virtual E_CharacterSet getSpecificCharacterSetType() const;
@@ -661,10 +667,13 @@ class DCMTK_DCMSR_EXPORT DSRDocument
   // --- set DICOM string attributes ---
 
     /** set specific character set.  The internal enumerated value is set accordingly.
-     *  Please note that code extensions techniques are not supported.  Therefore, only
-     *  a single value can be passed.
-     ** @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  Please note that this method does not return an error if the given 'value' is not
+     *  defined by the DICOM standard or not supported by this class, e.g. when no mapping
+     *  to the character set names needed for HTML/XHTML or XML output is defined.
+     *  If needed, check the return value of the method getSpecificCharacterSetType() for
+     *  DSRTypes::CS_unknown after calling this method.
+     ** @param  value  value to be set (single or multiple values) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1-n) if enabled
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setSpecificCharacterSet(const OFString &value,
@@ -1185,7 +1194,7 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     /// defined term: see class DSRTypes
     E_CharacterSet     SpecificCharacterSetEnum;
 
-    // DICOM attributes are listed ordered by module.
+    // DICOM attributes are listed ordered by Module.
     // The comments for each attribute describe "Name: (VR, VM, Type)".
     // Please note that for particular SR documents (e.g. Key Object Selection)
     // other rules might apply.  See DICOM standard for further reference.
@@ -1278,7 +1287,9 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     DcmLongString       ProtocolName;
     /// Series Description: (LO, 1, 3)
     DcmLongString       SeriesDescription;
-    /// Referenced Performed Procedure Step Sequence: (SQ, 1-n, 2)
+    /// Series Description Code Sequence: (SQ, 1, 3)
+     // - tbd: optional attribute not yet supported
+    /// Referenced Performed Procedure Step Sequence: (SQ, 1, 2)
     DcmSequenceOfItems  ReferencedPerformedProcedureStep;
 
     // --- SR Document General Module (M) ---
@@ -1299,12 +1310,18 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     DcmTime             ContentTime;
     /// Verifying Observer Sequence: (SQ, 1-n, 1C)
     DcmSequenceOfItems  VerifyingObserver;
+    /// Author Observer Sequence: (SQ, 1-n, 3)
+     // - tbd: optional attribute not yet supported
+    /// Participant Sequence: (SQ, 1-n, 3)
+     // - tbd: optional attribute not yet supported
+    /// Custodial Organization Sequence: (SQ, 1, 3)
+     // - tbd: optional attribute not yet supported
     /// Predecessor Documents Sequence: (SQ, 1-n, 1C)
     DSRSOPInstanceReferenceList PredecessorDocuments;
     /// Identical Documents Sequence: (SQ, 1-n, 1C)
     DSRSOPInstanceReferenceList IdenticalDocuments;
     // Referenced Request Sequence: (SQ, 1-n, 1C)
-    // - tbd: conditional attribute not yet supported
+     // - tbd: conditional attribute not yet supported
     /// Performed Procedure Code Sequence: (SQ, 1-n, 2)
     DcmSequenceOfItems  PerformedProcedureCode;
     /// Current Requested Procedure Evidence Sequence: (SQ, 1-n, 1C)
index ee0512bb228f5ad0753ec0006020f7737a9abd9f..af6f67126c35efe9c9c16ac82bab871e386b2362 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/dcmsr/dsrdoctn.h"
 #include "dcmtk/dcmsr/dsrcitem.h"
 
+#include "dcmtk/ofstd/ofmem.h"
 #include "dcmtk/dcmdata/dcitem.h"
 
 
-/*-----------------------*
- *  forward declaration  *
- *-----------------------*/
+/*------------------------*
+ *  forward declarations  *
+ *------------------------*/
 
 class DSRIODConstraintChecker;
+class DSRSubTemplate;
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+typedef OFshared_ptr<DSRSubTemplate> DSRSharedSubTemplate;
+
+
+/*--------------------------*
+ *  template instantiation  *
+ *--------------------------*/
+
+// the following is required in order to help older Clang compilers,
+// e.g. Clang 3.0 and 3.1 on Mac OS X when building with shared libs
+#if defined(__clang__)
+template class DSRTree<DSRDocumentTreeNode>;
+#endif
 
 
 /*---------------------*
@@ -64,6 +84,9 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *  Please note that the internal cursor is not copied but reset, i.e. set to the root
      *  node.  Also the IOD constraint checker is not copied by this class but recreated
      *  by the derived class DSRDocumentTree (based on the corresponding document type).
+     *  This constructor also updates any by-reference relationships, i.e. translates the
+     *  references from the source 'tree' (based on the position string) to the IDs of the
+     *  newly created nodes.
      ** @param  tree  subtree to be copied
      */
     DSRDocumentSubTree(const DSRDocumentSubTree &tree);
@@ -95,6 +118,11 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual OFBool isValid() const;
 
+    /** check whether the internal cursor, which points to the current content item, is valid
+     ** @return OFTrue if cursor is valid, OFFalse otherwise
+     */
+    virtual OFBool isCursorValid() const;
+
     /** check whether this subtree is a valid document tree.
      *  In order to be a valid document tree, there should be a single root node only, with
      *  the value type "CONTAINER", and the internal relationship type of this node should be
@@ -105,6 +133,14 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual OFBool isValidDocumentTree(const E_RelationshipType defaultRelType = RT_unknown) const;
 
+    /** check whether this subtree is an expanded document tree.
+     *  Expanded means that no instances of DSRIncludedTemplateTreeNode exist in the document
+     *  tree, i.e. no templates were included or all of them were replaced by their content
+     *  (subtree).
+     ** @return OFTrue if subtree is an expanded document tree, OFFalse otherwise
+     */
+    virtual OFBool isExpandedDocumentTree() const;
+
     /** check whether template identification is set
      ** @return OFTrue if template identification is set, OFFalse otherwise
      */
@@ -120,12 +156,23 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
     virtual OFBool canUseTemplateIdentification() const;
 
     /** print current SR document tree to specified output stream
-     ** @param  stream  output stream
-     *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @param  stream      output stream
+     *  @param  flags       optional flag used to customize the output (see DSRTypes::PF_xxx)
+     *  @param  posCounter  optional pointer to position counter that should be used
+     *                      for line indentation or numbering of nested content items
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition print(STD_NAMESPACE ostream &stream,
-                              const size_t flags = 0);
+                              const size_t flags = 0,
+                              DSRPositionCounter *posCounter = NULL);
+
+    /** write current SR document tree in XML format
+     ** @param  stream  output stream to which the XML document is written
+     *  @param  flags   optional flag used to customize the output (see DSRTypes::XF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
+                                 const size_t flags = 0);
 
     /** get reference to current content item.
      *  This mechanism allows to access all content items without using pointers.
@@ -133,6 +180,20 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual DSRContentItem &getCurrentContentItem();
 
+    /** count number of content items (nodes) in the document tree.
+     *  This method iterates over all nodes that are stored in the document tree.
+     *  By default, included sub-templates are counted as a single node (see options).
+     ** @param  searchIntoSubTemplates      optional flag indicating whether to also
+     *                                      count the content of included sub-templates
+     *                                      (i.e.\ the nodes of the managed subtrees)
+     *  @param  countIncludedTemplateNodes  optional flag indicating whether to count
+     *                                      the DSRIncludedTemplateTreeNode instances
+     *                                      as nodes.  See includeTemplate() for details.
+     ** @return number of nodes, 0 if document tree is empty
+     */
+    size_t countNodes(const OFBool searchIntoSubTemplates = OFFalse,
+                      const OFBool countIncludedTemplateNodes = OFTrue) const;
+
     /** set internal cursor to a named node.
      *  If more than one node exists with the given concept name, the first one will
      *  be selected.  Use gotoNextNamedNode() in order to go to the next matching node.
@@ -147,6 +208,18 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
                                  const OFBool startFromRoot = OFTrue,
                                  const OFBool searchIntoSub = OFTrue);
 
+    /** set internal cursor to a named node (starting from the first children of the
+     *  current node).
+     *  If more than one node exists with the given concept name, the first one will
+     *  be selected.  Use gotoNextNamedNode() in order to go to the next matching node.
+     ** @param  conceptName    concept name of the node to be searched for
+     *  @param  searchIntoSub  flag indicating whether to search into sub-trees
+     *                         ("deep search") or on the current level only
+     ** @return ID of the new current node if successful, 0 otherwise
+     */
+    virtual size_t gotoNamedChildNode(const DSRCodedEntryValue &conceptName,
+                                      const OFBool searchIntoSub = OFTrue);
+
     /** set internal cursor to the next named node.
      *  Starts from "next" node, i.e. either the first children of the current node
      *  or the first sibling following the current node.
@@ -180,7 +253,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
 
     /** check whether specified content item can be added to the current one.
      *  This method can be used to decide which type of content items can be added prior
-     *  to really doing so.
+     *  to really doing so.  Please note that only by-value relationships are supported.
      *  Always returns true if no constraint checker is available but 'relationshipType'
      *  and 'valueType' have valid values.
      ** @param  relationshipType  relationship type of node to be checked with regard to
@@ -192,18 +265,19 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual OFBool canAddContentItem(const E_RelationshipType relationshipType,
                                      const E_ValueType valueType,
-                                     const E_AddMode addMode = AM_afterCurrent);
+                                     const E_AddMode addMode = AM_afterCurrent) const;
 
     /** check whether specified by-reference relationship can be added to the current
      *  content item.
      *  Always returns true if no constraint checker is available but 'relationshipType' and
-     *  'targetValueType' have valid values.
+     *  'targetValueType' have valid values.  The value type DSRTypes::VT_includedTemplate is
+     *  never allowed for the target content item.
      ** @param  relationshipType  type of relationship between current and target node
      *  @param  targetValueType   value type of the referenced node (target content item)
      ** @return OFTrue if specified by-reference relationship can be added, OFFalse otherwise
      */
     virtual OFBool canAddByReferenceRelationship(const E_RelationshipType relationshipType,
-                                                 const E_ValueType targetValueType);
+                                                 const E_ValueType targetValueType) const;
 
     /** add specified content item to the current one.
      *  If possible, this method creates a new node as specified and adds it to the current
@@ -250,11 +324,13 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                            to the current one
      *  @param  valueType         value type of node to be added
      *  @param  conceptName       concept name of the node to be added
+     *  @param  check             if enabled, check 'conceptName for validity before setting it
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition addContentItem(const E_RelationshipType relationshipType,
                                        const E_ValueType valueType,
-                                       const DSRCodedEntryValue &conceptName);
+                                       const DSRCodedEntryValue &conceptName,
+                                       const OFBool check = OFTrue);
 
     /** add specified content item below the current one.
      *  If possible, this method creates a new node as specified and adds it below the current
@@ -266,11 +342,13 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                            to the current one
      *  @param  valueType         value type of node to be added
      *  @param  conceptName       concept name of the node to be added
+     *  @param  check             if enabled, check 'conceptName for validity before setting it
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition addChildContentItem(const E_RelationshipType relationshipType,
                                             const E_ValueType valueType,
-                                            const DSRCodedEntryValue &conceptName);
+                                            const DSRCodedEntryValue &conceptName,
+                                            const OFBool check = OFTrue);
 
     /** add specified by-reference relationship to the current content item.
      *  If possible, this method creates a new pseudo-node (relationship) and adds it to the
@@ -283,6 +361,15 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
     virtual size_t addByReferenceRelationship(const E_RelationshipType relationshipType,
                                               const size_t referencedNodeID);
 
+    /** update the position strings used to encode by-reference relationships (if any).
+     *  Internally, this method calls checkByReferenceRelationships() with the 'mode'
+     *  parameter being DSRTypes::CM_updatePositionString.  It should be called before
+     *  this subtree is cloned in order to make sure that the by-reference relationships
+     *  (if any) still work on the cloned subtree.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition updateByReferenceRelationships();
+
     /** check whether specified subtree can be inserted at the current position, i.e.\ added
      *  to the current content item.  Internally, the method canAddContentItem() is used for
      *  all top-level nodes of the document subtree.  In addition, if a constraint checker
@@ -296,9 +383,9 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                          type is used if the one of a top-level node is "unknown".
      ** @return OFTrue if specified subtree can be inserted, OFFalse otherwise
      */
-    virtual OFBool canInsertSubTree(DSRDocumentSubTree *tree,
+    virtual OFBool canInsertSubTree(const DSRDocumentSubTree *tree,
                                     const E_AddMode addMode = AM_belowCurrent,
-                                    const E_RelationshipType defaultRelType = RT_unknown);
+                                    const E_RelationshipType defaultRelType = RT_unknown) const;
 
     /** insert specified subtree to this tree, i.e.\ add it to the current content item.
      *  If possible, this method adds a given new subtree to the current content item.
@@ -371,6 +458,30 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual DSRDocumentSubTree *cloneSubTree(const size_t stopAfterNodeID = 0) const;
 
+    /** created an expanded version of this (sub)tree.
+     *  Expanded means that no instance of DSRIncludedTemplateTreeNode will exist in the new
+     *  document tree, i.e. all of them are replaced by their content (subtree).  Please note
+     *  that the returned subtree has to be deleted by the caller if it is not inserted into
+     *  the document tree using insertSubTree().
+     ** @param  tree  variable that will store the pointer to the new subtree
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition createExpandedSubTree(DSRDocumentSubTree *&tree) const;
+
+    /** compare template identification of the root node with given values.
+     *  Please note that the comparison only takes place if there is a single node at the
+     *  root of the tree and its value type is CONTAINER.
+     ** @param  templateIdentifier  template identifier to compare with
+     *  @param  mappingResource     mapping resource that defines the template
+     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
+     *                              Not used for comparison if the value is empty.
+     ** @result OFTrue if template identification can be compared and the values are
+     *          identical, OFFalse otherwise
+     */
+    virtual OFBool compareTemplateIdentification(const OFString &templateIdentifier,
+                                                 const OFString &mappingResource,
+                                                 const OFString &mappingResourceUID = "") const;
+
     /** get template identifier and mapping resource from the root node of this tree.  See
      *  DSRDocumentTreeNode::getTemplateIdentification() for details on template identification.
      *  Please note that the template identification is only retrieved if there is a single node
@@ -444,11 +555,21 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      ** @param  node     pointer to the new node to be added
      *  @param  addMode  flag specifying at which position to add the new node
      *                   (e.g. after or below the current node)
-     ** @return ID of the new added node if successful, 0 otherwise
+     ** @return ID of the new node if successful, 0 otherwise
      */
     virtual size_t addNode(DSRDocumentTreeNode *node,
                            const E_AddMode addMode = AM_afterCurrent);
 
+    /** replace current node by the given one.
+     *  Please note that no copy of the given node is created.  Therefore, the node
+     *  should be created with new() - do not use a reference to a local variable.  If
+     *  the node could be replaced successfully, the "old" node (and all of its child
+     *  nodes) are deleted, and the cursor is set to the new one.
+     ** @param  node  pointer to the new node to replace the current one
+     ** @return ID of the new node if successful, 0 otherwise
+     */
+    virtual size_t replaceNode(DSRDocumentTreeNode *node);
+
     /** extract current node from tree.
      *  Please note that not only the specified node but also all of its child nodes are
      *  extracted from the tree.  The cursor is set automatically to a new valid position.
@@ -472,6 +593,38 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual size_t removeNode();
 
+    /** include specified sub-template, i.e.\ add a new DSRIncludedTemplateTreeNode, which
+     *  references this template, to the current content item.
+     *  Please note that no checks are performed that would make sure that the template
+     *  with its top-level nodes can actually be added, e.g. by using an IOD constraint
+     *  checker.  This is also the reason why this method is "protected" and not "public",
+     *  i.e. it can only be used by derived classes, e.g. DSRSubTemplate and its children.
+     ** @param  subTemplate     shared pointer to a sub-template that should be included
+     *                          into this tree (at the current position)
+     *  @param  addMode         flag specifying at which position to add the 'subTemplate'
+     *                          (e.g. after or below the current node)
+     *  @param  defaultRelType  default relationship type that will be used when the
+     *                          subtree that is managed by the 'subTemplate' is inserted
+     *                          into this tree and the relationship type of one of the
+     *                          top-level nodes is "unknown".  Also see documentation of
+     *                          createExpandedSubTree().
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition includeTemplate(const DSRSharedSubTemplate &subTemplate,
+                                        const E_AddMode addMode = AM_belowCurrent,
+                                        const E_RelationshipType defaultRelType = RT_unknown);
+
+    /** expand all "included template" content items in a given (sub)tree.
+     *  Expanding means that all instances of DSRIncludedTemplateTreeNode are replaced by
+     *  their content (subtree).
+     *  Please note that the internal cursor of the given 'tree' is set to the root node
+     *  if no error occurred.  Otherwise, the cursor points to the content item that
+     *  caused the problem.
+     ** @param  tree  pointer to the subtree that should be expanded
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition expandIncludedTemplates(DSRDocumentSubTree *tree) const;
+
     /** check the by-reference relationships (if any) for validity.
      *  This function checks whether all by-reference relationships possibly contained
      *  in the document tree are valid according to the following restrictions: source
@@ -507,8 +660,8 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                   If NULL, no checks are performed by this method.
      ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition checkSubTreeConstraints(DSRDocumentSubTree *tree,
-                                                DSRIODConstraintChecker *checker);
+    virtual OFCondition checkSubTreeConstraints(const DSRDocumentSubTree *tree,
+                                                const DSRIODConstraintChecker *checker) const;
 
     /// check relationship content constraints of the associated IOD
     DSRIODConstraintChecker *ConstraintChecker;
index d93e290f7517af3d37ac0e39fb967ebcd060038d..7e4f7f65367f6ad8dfb5c2bab67c2af5a23daf29 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -139,6 +139,18 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     virtual OFCondition print(STD_NAMESPACE ostream &stream,
                               const size_t flags) const;
 
+    /** print extended information on the content item.
+     *  The following details are printed (if present and output is enabled): observation
+     *  date/time (in curly brackets), annotation text (in quotation marks) and template
+     *  identification (after a hash mark).  This method is intended to be called after
+     *  the general print() method, e.g. like it is done by DSRDocumentSubTree::print().
+     ** @param  stream  output stream to which the extended information should be printed
+     *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition printExtended(STD_NAMESPACE ostream &stream,
+                                      const size_t flags) const;
+
     /** read content item from dataset.
      *  A number of readXXX() methods are called (see "protected" part) in order to retrieve all
      *  possibly nested content items from the dataset.
@@ -399,6 +411,17 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     virtual OFCondition setObservationUID(const OFString &observationUID,
                                           const OFBool check = OFTrue);
 
+    /** compare template identification with given values
+     ** @param  templateIdentifier  template identifier to compare with
+     *  @param  mappingResource     mapping resource that defines the template
+     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
+     *                              Not used for comparison if the value is empty.
+     ** @result OFTrue if template identification is identical, OFFalse otherwise
+     */
+    virtual OFBool compareTemplateIdentification(const OFString &templateIdentifier,
+                                                 const OFString &mappingResource,
+                                                 const OFString &mappingResourceUID = "") const;
+
     /** get template identifier and mapping resource.
      *  This value pair identifies the template that was used to create this content item
      *  (and its children).  According to the DICOM standard, it is "required if a template
@@ -598,7 +621,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     /** read document relationship macro
      ** @param  dataset            DICOM dataset from which the data should be read
      *  @param  constraintChecker  checks relationship content constraints of the associated IOD
-     *  @param  posString          location of the current content item (e.g. "1.2.3")
+     *  @param  posString          location of the current content item (e.g.\ "1.2.3")
      *  @param  flags              flag used to customize the reading process (see DSRTypes::RF_xxx)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -618,7 +641,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
 
     /** read document content macro
      ** @param  dataset    DICOM dataset from which the data should be read
-     *  @param  posString  location of the current content item (e.g. "1.2.3")
+     *  @param  posString  location of the current content item (e.g.\ "1.2.3")
      *  @param  flags      flag used to customize the reading process (see DSRTypes::RF_xxx)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -635,7 +658,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     /** read content sequence
      ** @param  dataset            DICOM dataset from which the data should be read
      *  @param  constraintChecker  checks relationship content constraints of the associated IOD
-     *  @param  posString          location of the current content item (e.g. "1.2.3")
+     *  @param  posString          location of the current content item (e.g.\ "1.2.3")
      *  @param  flags              flag used to customize the reading process (see DSRTypes::RF_xxx)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -706,10 +729,10 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
 
   private:
 
-    /// flag indicating whether the content item is marked (e.g. used for digital signatures).
+    /// flag indicating whether the content item is marked (e.g.\ used for digital signatures).
     /// The default value is OFFalse.
     OFBool             MarkFlag;
-    /// flag indicating whether the content item is referenced (by-reference relationship)
+    /// flag indicating whether the content item is referenced (by-reference relationship).
     /// The default value is OFFalse.
     OFBool             ReferenceTarget;
 
index db47f840f4cebf0181d265141efe545f30778c4e..06798fbf87669d0cd9f6380228e8938b4796c832 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -91,6 +91,14 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      */
     virtual OFBool isValid() const;
 
+    /** print current SR document tree to specified output stream
+     ** @param  stream  output stream
+     *  @param  flags   optional flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition print(STD_NAMESPACE ostream &stream,
+                              const size_t flags = 0);
+
     /** read SR document tree from DICOM dataset.
      *  Please note that the current document tree is also deleted if the reading fails.
      *  If logging is enabled, the reason for any error might be obtained from the
@@ -104,7 +112,8 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
                              const E_DocumentType documentType,
                              const size_t flags = 0);
 
-    /** write current SR document tree to DICOM dataset
+    /** write current SR document tree to DICOM dataset.
+     *  Please note that included (non-expanded) sub-templates are not supported.
      ** @param  dataset      reference to DICOM dataset where the current tree should be
      *                       written to.  The 'dataset' is not cleared before writing to it!
      *  @param  markedItems  optional stack where pointers to all 'marked' content items
@@ -125,15 +134,8 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
                                 DSRXMLCursor cursor,
                                 const size_t flags);
 
-    /** write current SR document tree in XML format
-     ** @param  stream  output stream to which the XML document is written
-     *  @param  flags   flag used to customize the output (see DSRTypes::XF_xxx)
-     ** @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
-                                 const size_t flags);
-
-    /** render current SR document tree in HTML/XHTML format
+    /** render current SR document tree in HTML/XHTML format.
+     *  Please note that included (non-expanded) sub-templates are not supported.
      ** @param  docStream    output stream to which the main HTML/XHTML document is written
      *  @param  annexStream  output stream to which the HTML/XHTML document annex is written
      *  @param  flags        optional flag used to customize the output (see DSRTypes::HF_xxx)
@@ -144,7 +146,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
                                    const size_t flags = 0);
 
     /** get document type
-     ** return current document type (might be DSRTypes::DT_invalid)
+     ** @return current document type (might be DSRTypes::DT_invalid)
      */
     inline E_DocumentType getDocumentType() const
     {
@@ -183,7 +185,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      */
     virtual OFBool canAddContentItem(const E_RelationshipType relationshipType,
                                      const E_ValueType valueType,
-                                     const E_AddMode addMode = AM_afterCurrent);
+                                     const E_AddMode addMode = AM_afterCurrent) const;
 
     /** check whether specified subtree can be inserted at the current position, i.e.\ added
      *  to the current content item.
@@ -198,9 +200,9 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      *                          type is used if the one of a top-level node is "unknown".
      ** @return OFTrue if specified subtree can be inserted, OFFalse otherwise
      */
-    virtual OFBool canInsertSubTree(DSRDocumentSubTree *tree,
+    virtual OFBool canInsertSubTree(const DSRDocumentSubTree *tree,
                                     const E_AddMode addMode = AM_belowCurrent,
-                                    const E_RelationshipType defaultRelType = RT_unknown);
+                                    const E_RelationshipType defaultRelType = RT_unknown) const;
 
     /** check whether the document tree complies with the constraints of the given checker.
      *  This method also checks whether the currently stored document tree is either empty
index 5f07e98a014ba86866eae3c781fbe7a2bda6c293..86b3c28214e13b3509dcb7d9927bd854ba08bccc 100644 (file)
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSREnhancedSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_EnhancedSR)
index 3fee4e400cc38da6943430b4e2078d22239aa112..01f622c6a8a9cb1ed95300cef99acc829067e507 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -135,6 +135,11 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
      */
     virtual OFBool isShort(const size_t flags) const;
 
+    /** check whether the current image reference points to a DICOM segmentation object
+     ** @return OFTrue if a segmentation object is referenced, OFFalse otherwise
+     */
+    virtual OFBool isSegmentation() const;
+
     /** print image reference.
      *  The output of a typical image reference value looks like this: (CT image,"1.2.3") or
      *  (CT image,"1.2.3"),(GSPS,"1.2.3.4") if a presentation state is present.
@@ -345,6 +350,14 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
         return FrameList;
     }
 
+    /** get read-only access to list of referenced frame numbers
+     ** @return constant reference to frame list
+     */
+    inline const DSRImageFrameList &getFrameList() const
+    {
+        return FrameList;
+    }
+
     /** get reference to list of referenced segment numbers.
      *  According to the DICOM standard, this list is required if the referenced image is
      *  a segmentation object, and the reference does not apply to all segments and the list
@@ -356,6 +369,14 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
         return SegmentList;
     }
 
+    /** get read-only access to list of referenced segment numbers
+     ** @return constant reference to segment list
+     */
+    inline const DSRImageSegmentList &getSegmentList() const
+    {
+        return SegmentList;
+    }
+
     /** check whether the image reference applies to a specific frame.
      *  The image reference applies to a frame (of multiframe images) if the list of
      *  referenced frame numbers is empty or the frame number is part of the list.
@@ -397,10 +418,16 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
      */
     virtual OFCondition writeItem(DcmItem &dataset) const;
 
+    /** check whether the given SOP class UID refers to a DICOM segmentation object
+     ** @param  sopClassUID  SOP class UID to be checked
+     ** @return OFTrue if the UID refers to a segmentation object, OFFalse otherwise
+     */
+    virtual OFBool isSegmentationObject(const OFString &sopClassUID) const;
+
     /** check the specified SOP class UID for validity.
      *  This method further specializes the checks performed in the base class
-     *  DSRCompositeReferenceValue.  All image SOP classes that are defined in
-     *  DICOM PS 3.6-2014a and the "Segmentation Storage SOP Class" are allowed.
+     *  DSRCompositeReferenceValue.  All image and segmentation SOP classes that
+     *  are defined in DICOM PS 3.6-2015c are allowed.
      ** @param  sopClassUID  SOP class UID to be checked
      ** @return status, EC_Normal if value is valid, an error code otherwise
      */
@@ -424,15 +451,19 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
     virtual OFCondition checkRealWorldValueMapping(const DSRCompositeReferenceValue &referenceValue) const;
 
     /** check the given list of frame and segment numbers for validity.
-     *  The only check that is currently performed is that either both lists are empty or only
-     *  one of them is non-empty, because otherwise the "type 1C" condition would be violated.
-     ** @param  frameList       list of referenced frame numbers to be checked
+     *  Either both lists have to be empty or only one of them has to be non-empty,
+     *  because otherwise the "type 1C" condition would be violated.  Also the list
+     *  of segment numbers should only be non-empty for one of the DICOM segmentation
+     *  objects (see isSegmentationObject()).
+     ** @param  sopClassUID     SOP class UID of the image object to be checked
+     *  @param  frameList       list of referenced frame numbers to be checked
      *  @param  segmentList     list of referenced segment numbers to be checked
-     *  @param  reportWarnings  if enabled, report a warning message on each deviation from an
-     *                          expected value to the logger
+     *  @param  reportWarnings  if enabled, report a warning message on each deviation
+     *                          from an expected value to the logger
      ** @return status, EC_Normal if checked data is valid, an error code otherwise
      */
-    OFCondition checkListData(const DSRImageFrameList &frameList,
+    OFCondition checkListData(const OFString &sopClassUID,
+                              const DSRImageFrameList &frameList,
                               const DSRImageSegmentList &segmentList,
                               const OFBool reportWarnings = OFFalse) const;
 
index 2d4242ef2bbb738665ab1914e7c70329bdd0f01a..5c72fe9b7b1ddb5164e4e3a01c95ebd449d41b35 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Implantation Plan SR Document IOD
+/** Class for checking the relationship content constraints of the Implantation Plan
+ *  SR Document IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 7000
+ *  (Implantation Plan) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRImplantationPlanSRDocumentConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRImplantationPlanSRDocumentConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "7000"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ImplantationPlanSRDocument)
index e08892e69387d9e5099eef6dc22651b3dbfe095d..fd137814c865dbe0c8a3308f8612d422fa810641 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRIODConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const = 0;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) if required, NULL otherwise
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const = 0;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const = 0;
 
     /** get the associated document type of the SR IOD (abstract)
      ** @return document type (see DSRTypes::E_DocumentType)
index ce26ef7bb770252eb481122a2bde9f88cc00f6d1..4ad283607507972d0f876c81d8ae692a3941faf2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Key Object Selection Document IOD
+/** Class for checking the relationship content constraints of the Key Object
+ *  Selection Document IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 2010
+ *  (Key Object Selection) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRKeyObjectSelectionDocumentConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRKeyObjectSelectionDocumentConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "2010"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_KeyObjectSelectionDocument)
index d9540509f835459753da0ec39618bb3426e4ec97..66c742ba2240b9e8cd1d833746087a2f51d7b194 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Macular Grid Thickness And Volume Report IOD
+/** Class for checking the relationship content constraints of the Macular Grid
+ *  Thickness And Volume Report IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 2100
+ *  (Macular Grid Thickness and Volume Report) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRMacularGridThicknessAndVolumeReportConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRMacularGridThicknessAndVolumeReportConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "2100"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_MacularGridThicknessAndVolumeReport)
index 2c72722be758d8c908538129faa67de1ebdcf70d..7335f37060f242b05436531e48c089293c2a5997 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Mammography CAD SR IOD
+/** Class for checking the relationship content constraints of the Mammography CAD SR
+ *  IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 4000
+ *  (Mammography CAD Document Root) invoked at the root node.  When a content item
+ *  sub-tree from a prior document is duplicated by-value, its observation context
+ *  shall be defined by TID 1001 (Observation Context) and its subordinate templates."
  */
 class DCMTK_DCMSR_EXPORT DSRMammographyCadSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +64,14 @@ class DCMTK_DCMSR_EXPORT DSRMammographyCadSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "4000"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_MammographyCadSR)
index 9c10355552677c14f69bdbe705665432b826b61a..7f4d599cf228ddbf7b0e7d2330ebba2daad3a701 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -35,7 +35,7 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for numeric measurement values
+/** Class for numeric values and measurements
  */
 class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
 {
@@ -49,7 +49,7 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
     DSRNumericMeasurementValue();
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  check            if enabled, check 'numericValue' and 'measurementUnit' for
      *                           validity before setting them.  See corresponding setValue()
@@ -60,7 +60,18 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
                                const OFBool check = OFTrue);
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  valueQualifier  code representing the numeric value qualifier.  Used to
+     *                          specify the reason for the absence of the measured value
+     *                          sequence, i.e. why the numeric value and measurement unit
+     *                          are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See corresponding setValue() method for details.
+     */
+    DSRNumericMeasurementValue(const DSRCodedEntryValue &valueQualifier,
+                               const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  valueQualifier   code representing the numeric value qualifier (optional).
      *                           Can also be used to specify the reason for the absence of
@@ -111,11 +122,21 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
      */
     virtual OFBool isEmpty() const;
 
+    /** check whether the current numeric measurement value is complete, i.e.\ whether the
+     *  numeric value is non-empty and the measurement unit is complete, or whether the
+     *  value qualifier is complete.  This is just a basic check that might be useful for
+     *  "validating" input data.  See isValid() for a more sophisticated way of checking
+     *  the current numeric measurement value.
+     ** @return OFTrue if value is complete, OFFalse otherwise
+     */
+    virtual OFBool isComplete() const;
+
     /** print numeric measurement value.
      *  The output of a typical numeric measurement value looks like this:
-     *  "3.5" (cm,UCUM[1.4],"centimeter").  If the value is empty the text "empty" is printed
-     *  instead.  The numeric value qualifier as well as the possibly available additional
-     *  floating point and rational representations of the numeric value are never printed.
+     *  "3.5" (cm,UCUM[1.4],"centimeter").  If the value is empty, the text "empty" is printed
+     *  instead, followed by the numeric value qualifier (if present).  The possibly available
+     *  additional floating point and rational representations of the numeric value are never
+     *  printed.
      ** @param  stream  output stream to which the numeric measurement value should be printed
      *  @param  flags   flag used to customize the output (not used)
      ** @return status, EC_Normal if successful, an error code otherwise
@@ -271,6 +292,19 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
                          const DSRCodedEntryValue &measurementUnit,
                          const OFBool check = OFTrue);
 
+    /** set empty numeric value and measurement unit with a numeric value qualifier.
+     *  Before setting the value, it is usually checked.  If the value is invalid, the
+     *  current numeric measurement value is not replaced and remains unchanged.
+     ** @param  valueQualifier  numeric value qualifier to be set.  Used to specify the
+     *                          reason for the absence of the measured value sequence,
+     *                          i.e. why the numeric value and measurement unit are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See checkNumericValueQualifier() method for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const DSRCodedEntryValue &valueQualifier,
+                         const OFBool check = OFTrue);
+
     /** set numeric value, measurement unit and numeric value qualifier.
      *  Before setting the values, they are usually checked.  Please note that both
      *  'numericValue' and 'measurementUnit' either have to be empty or non-empty.
@@ -495,4 +529,16 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
 };
 
 
+/** output stream operator for numeric measurement values.
+ *  Internally, the DSRNumericMeasurementValue::print() method is used, i.e. the output
+ *  looks like this: "3.5" (cm,UCUM[1.4],"centimeter") or "empty" (if the value is empty)
+ *  @param  stream              output stream to which the numeric measurement value is
+ *                              printed
+ *  @param  numericMeasurement  numeric measurement value to be printed
+ *  @return reference to output stream
+ */
+DCMTK_DCMSR_EXPORT STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                                     const DSRNumericMeasurementValue &numericMeasurement);
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrposcn.h b/dcmsr/include/dcmtk/dcmsr/dsrposcn.h
new file mode 100644 (file)
index 0000000..0768b9e
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRPositionCounter
+ *
+ */
+
+
+#ifndef DSRPOSCN_H
+#define DSRPOSCN_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/ofstring.h"
+#include "dcmtk/ofstd/oflist.h"
+
+#include "dcmtk/dcmsr/dsdefine.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class implementing a position counter to be used for iterating a tree of nodes
+ */
+class DCMTK_DCMSR_EXPORT DSRPositionCounter
+{
+  public:
+
+    /** default constructor
+     */
+    DSRPositionCounter();
+
+    /** copy constructor
+     ** @param  counter  object to be copied
+     */
+    DSRPositionCounter(const DSRPositionCounter &counter);
+
+    /** destructor
+     */
+    virtual ~DSRPositionCounter();
+
+    /** assignment operator
+     ** @param  counter  object to be copied
+     ** @return reference to modified cursor (this object)
+     */
+    DSRPositionCounter &operator=(const DSRPositionCounter &counter);
+
+    /** conversion operator that returns the position on the current level
+     *  (0 if the position counter is invalid)
+     */
+    inline operator size_t () const
+    {
+        return Position;
+    }
+
+    /** pre-increment operator.  Increases the position on the current level by 1.
+     *  Also makes the position counter valid if it was invalid before.
+     */
+    inline DSRPositionCounter &operator++()
+    {
+        ++Position;
+        return *this;
+    }
+
+    /** pre-decrement operator.  Decreases the position on the current level by 1.
+     *  This makes the position counter invalid if the position was 1 before.
+     */
+    inline DSRPositionCounter &operator--()
+    {
+        /* avoid underflow */
+        if (Position > 0) --Position;
+        return *this;
+    }
+
+    /** clear all member variables.
+     *  The position counter becomes invalid afterwards (same state as after default
+     *  construction).  Also see initialize().
+     */
+    void clear();
+
+    /** initialize the position counter
+     ** @param  valid  flag specifying whether the counter should be initialized as
+     *                 valid (default) or invalid
+     */
+    void initialize(const OFBool valid = OFTrue);
+
+    /** check whether position counter is valid (i.e.\ has been initialized)
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    inline OFBool isValid() const
+    {
+        return (Position > 0);
+    }
+
+    /** go one level up, i.e.\ restore the position on the next upper level and forget
+     *  about the current level
+     ** @return OFTrue if successful, OFFalse otherwise
+     */
+    OFBool goUp();
+
+    /** go one level down, i.e.\ store the position on the current level and start with
+     *  1 on the new level
+     ** @return OFTrue if successful, OFFalse otherwise
+     */
+    OFBool goDown();
+
+    /** get current level of the position counter.
+     *  The top most (root) level is 1, the next lower level is 2, etc.
+     ** @return number of the current level if valid, 0 otherwise
+     */
+    inline size_t getLevel() const
+    {
+        /* check for valid counter */
+        return isValid() ? PositionList.size() + 1 : 0;
+    }
+
+    /** get string representing the current state of the position counter.
+     *  See DSRTreeNodeCursor::getPosition() for details.
+     ** @param  position   variable where the position string should be stored
+     *  @param  separator  character used to separate the figures (default: '.')
+     ** @return reference to the resulting position string (empty if invalid)
+     */
+    const OFString &getString(OFString &position,
+                              const char separator = '.') const;
+
+
+  private:
+
+    /// current position within the current level
+    size_t Position;
+    /// list of position counters in upper levels
+    OFList<size_t> PositionList;
+};
+
+
+#endif
index bca1c89856169c98101facdc60143a671e3501af..55626dd2b9a2d35fe2e6a08f24539f4bd7a12baa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,9 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Procedure Log IOD
+/** Class for checking the relationship content constraints of the Procedure Log IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 3001
+ *  (Procedure Log) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRProcedureLogConstraintChecker
   : public DSRIODConstraintChecker
@@ -55,14 +57,18 @@ class DCMTK_DCMSR_EXPORT DSRProcedureLogConstraintChecker
     virtual OFBool isByReferenceAllowed() const;
 
     /** check whether this SR IOD requires template support
-     ** @return always returns OFTrue, i.e. template support is required
+     ** @return always returns OFFalse, i.e. template support is not required
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "3001"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ProcedureLog)
index 2d2f2a1cbfc9ea49c347ef7b58dcadcccf6f163f..9fa55d67447892d3da7ecbe6330261f1de2bd906 100644 (file)
@@ -34,7 +34,9 @@
  *---------------------*/
 
 /** Class for checking the relationship content constraints of the Radiopharmaceutical
- *  Radiation Dose SR IOD
+ *  Radiation Dose SR IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 10021
+ *  (Radiopharmaceutical Radiation Dose) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_RadiopharmaceuticalRadiationDoseSR)
index 8f78a1ef828494b806b4030e4ad7be599d1113c1..a38447fac0afc9f128e2b169658c58591c3b61eb 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -95,7 +95,9 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
      */
     virtual void clear();
 
-    /** check whether the current internal state is valid
+    /** check whether the current internal state is valid.
+     *  That means, whether both the internally stored document tree and the template
+     *  identification are valid.
      ** @return OFTrue if valid, OFFalse otherwise
      */
     virtual OFBool isValid() const;
@@ -104,7 +106,7 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
      *  document tree starting from the root node
      ** @return always returns OFTrue since this class handles root templates
      */
-    OFBool isRootTemplate() const
+    inline OFBool isRootTemplate() const
     {
         return OFTrue;
     }
@@ -112,7 +114,7 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
     /** get read-only access to internally stored document tree.
      *  This method is not "const" because the template identification is set/updated
      *  automatically for the root node of the document tree (if applicable).
-     ** @return get constant reference to internally stored document tree
+     ** @return constant reference to internally stored document tree
      */
     virtual const DSRDocumentTree &getTree();
 
@@ -134,9 +136,26 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
 
   // --- introduce some methods from base class to public API
 
+    using DSRDocumentTree::isEmpty;
+    using DSRDocumentTree::isCursorValid;
     using DSRDocumentTree::getDocumentType;
     using DSRDocumentTree::print;
+    using DSRDocumentTree::writeXML;
     using DSRDocumentTree::countNodes;
+    using DSRDocumentTree::countChildNodes;
+    using DSRDocumentTree::hasParentNode;
+    using DSRDocumentTree::hasChildNodes;
+    using DSRDocumentTree::hasPreviousNode;
+    using DSRDocumentTree::hasNextNode;
+    using DSRDocumentTree::hasSiblingNodes;
+    using DSRDocumentTree::iterate;
+    using DSRDocumentTree::gotoRoot;
+    using DSRDocumentTree::gotoFirst;
+    using DSRDocumentTree::gotoLast;
+    using DSRDocumentTree::gotoPrevious;
+    using DSRDocumentTree::gotoNext;
+    using DSRDocumentTree::gotoParent;
+    using DSRDocumentTree::gotoChild;
     using DSRDocumentTree::gotoNamedNode;
     using DSRDocumentTree::gotoNextNamedNode;
     using DSRDocumentTree::gotoAnnotatedNode;
index 75651fa8d71cdeecd92eb255bc9c235e027028b1..1e9d852a22df2fb22fd43f5859cf7f0220f3e52d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -261,6 +261,8 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinatesValue
     DSRGraphicDataList      GraphicDataList;
     /// Fiducial UID (VR=UI, VM=1, type 3)
     OFString                FiducialUID;
+    /// Pixel Origin Interpretation (VR=CS, VM=1, type 1C)
+     // - tbd: conditional attribute not yet supported
 };
 
 
index f6620b44fe0639b5a3039095e4649cba95bc4cea..92f1cb436bcba6cbd1f922c976091f35006b9df5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2015, OFFIS e.V.
+ *  Copyright (C) 2002-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -234,6 +234,15 @@ class DCMTK_DCMSR_EXPORT DSRSOPInstanceReferenceList
      */
     const OFString &getSOPClassUID(OFString &stringValue) const;
 
+    /** get name associated with the SOP class UID of the currently selected entry
+     ** @param  stringValue  reference to string variable in which the result is stored
+     *  @param  defaultName  string value that is returned if the SOP class UID is unknown
+     ** @return reference to the resulting string (might be empty even if 'defaultName' is
+     *          non-empty, e.g. in case no entry is currently selected)
+     */
+    const OFString &getSOPClassName(OFString &stringValue,
+                                    const OFString &defaultName = "unknown SOP Class UID") const;
+
     /** get the retrieve application entity title of the currently selected entry (optional).
      *  The resulting string may contain multiple values separated by a backslash ("\").
      ** @param  stringValue  reference to string variable in which the result is stored
index 2e390b365ee6c3b93b343ab7df214040559d2f44..ca723c3993b791921d916147a6d34f9b5563aae5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Spectacle Prescription Report IOD
+/** Class for checking the relationship content constraints of the Spectacle
+ *  Prescription Report IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 2020
+ *  (Spectacle Prescription Report) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRSpectaclePrescriptionReportConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRSpectaclePrescriptionReportConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "2020"
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_SpectaclePrescriptionReport)
index 1b164359f069d989602ef69feb69c1e5a7962851..6897418e54dd70fe5258c43451ce41385ec5fd3e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -86,7 +86,9 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
      */
     virtual void clear();
 
-    /** check whether the current internal state is valid
+    /** check whether the current internal state is valid.
+     *  That means, whether both the internally stored subtree and the template
+     *  identification are valid.
      ** @return OFTrue if valid, OFFalse otherwise
      */
     virtual OFBool isValid() const;
@@ -95,7 +97,7 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
      *  document tree starting from the root node
      ** @return always returns OFFalse since this class handles non-root templates only
      */
-    OFBool isRootTemplate() const
+    inline OFBool isRootTemplate() const
     {
         return OFFalse;
     }
@@ -103,7 +105,7 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
     /** get read-only access to internally stored subtree.
      *  This method is not "const" because the template identification is set/updated
      *  automatically for the root node of the subtree (if applicable).
-     ** @return get constant reference to internally stored subtree
+     ** @return constant reference to internally stored subtree
      */
     virtual const DSRDocumentSubTree &getTree();
 
@@ -125,8 +127,25 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
 
   // --- introduce some methods from base class to public API
 
+    using DSRDocumentSubTree::isEmpty;
+    using DSRDocumentSubTree::isCursorValid;
     using DSRDocumentSubTree::print;
+    using DSRDocumentSubTree::writeXML;
     using DSRDocumentSubTree::countNodes;
+    using DSRDocumentSubTree::countChildNodes;
+    using DSRDocumentSubTree::hasParentNode;
+    using DSRDocumentSubTree::hasChildNodes;
+    using DSRDocumentSubTree::hasPreviousNode;
+    using DSRDocumentSubTree::hasNextNode;
+    using DSRDocumentSubTree::hasSiblingNodes;
+    using DSRDocumentSubTree::iterate;
+    using DSRDocumentSubTree::gotoRoot;
+    using DSRDocumentSubTree::gotoFirst;
+    using DSRDocumentSubTree::gotoLast;
+    using DSRDocumentSubTree::gotoPrevious;
+    using DSRDocumentSubTree::gotoNext;
+    using DSRDocumentSubTree::gotoParent;
+    using DSRDocumentSubTree::gotoChild;
     using DSRDocumentSubTree::gotoNamedNode;
     using DSRDocumentSubTree::gotoNextNamedNode;
     using DSRDocumentSubTree::gotoAnnotatedNode;
index 561131fe42c35586191bbbc61a16043a46d21827..4d731dfa3c8c7eef5e64fceb05b4ec0d834312c2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
-#include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/ofstd/ofstack.h"
-#include "dcmtk/ofstd/oflist.h"
 
 #include "dcmtk/dcmsr/dsdefine.h"
 #include "dcmtk/dcmsr/dsrtypes.h"
+#include "dcmtk/dcmsr/dsrposcn.h"
 #include "dcmtk/dcmsr/dsrtnant.h"
 
 
@@ -62,10 +61,14 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     DSRTreeNodeCursor(const DSRTreeNodeCursor<T> &cursor);
 
-    /** constructor
-     ** @param  node  pointer to tree node used to initialize the cursor (set to this node)
+    /** constructor.
+     *  See comments on setCursor(T*) method.
+     ** @param  node      pointer to tree node used to initialize the cursor
+     *  @param  position  optional pointer to position counter that should be used to
+     *                    initialize the internal counter
      */
-    DSRTreeNodeCursor(T *node);
+    DSRTreeNodeCursor(T *node,
+                      const DSRPositionCounter *position = NULL);
 
     /** destructor
      */
@@ -77,13 +80,15 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     DSRTreeNodeCursor<T> &operator=(const DSRTreeNodeCursor<T> &cursor);
 
-    /** assignment operator
+    /** assignment operator.
+     *  See comments on setCursor(T*) method.
      ** @param  node  node to which the cursor should be set
      ** @return reference to modified cursor (this object)
      */
     DSRTreeNodeCursor<T> &operator=(T *node);
 
-    /** clear all member variables
+    /** clear all member variables.
+     *  The cursor becomes invalid afterwards (same state as after default construction).
      */
     virtual void clear();
 
@@ -104,27 +109,27 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
     /** check whether the current node has a parent
      ** @return OFTrue if the current node has a parent, OFFalse otherwise
      */
-    OFBool hasParentNode() const;
+    inline OFBool hasParentNode() const;
 
     /** check whether the current node has any children
      ** @return OFTrue if the current node has any children, OFFalse otherwise
      */
-    OFBool hasChildNodes() const;
+    inline OFBool hasChildNodes() const;
 
     /** check whether the current node has a preceding sibling
      ** @return OFTrue if the current node has a preceding sibling, OFFalse otherwise
      */
-    OFBool hasPreviousNode() const;
+    inline OFBool hasPreviousNode() const;
 
     /** check whether the current node has a following sibling
      ** @return OFTrue if the current node has a following sibling, OFFalse otherwise
      */
-    OFBool hasNextNode() const;
+    inline OFBool hasNextNode() const;
 
     /** check whether the current node has any siblings
      ** @return OFTrue if the current node has any siblings, OFFalse otherwise
      */
-    OFBool hasSiblingNodes() const;
+    inline OFBool hasSiblingNodes() const;
 
     /** get pointer to current node
      ** @return pointer to current node (might be NULL)
@@ -135,7 +140,7 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      *  Can be used to have a lookup to the parent node without changing the cursor.
      ** @return pointer to parent node (if any), NULL otherwise
      */
-    virtual const T *getParentNode();
+    virtual const T *getParentNode() const;
 
     /** get pointer to first child node.
      *  Can be used to have a lookup to the first child node without changing the cursor.
@@ -187,6 +192,14 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     size_t goDown();
 
+    /** @copydoc goUp()
+     */
+    inline size_t gotoParent();
+
+    /** @copydoc goDown()
+     */
+    inline size_t gotoChild();
+
     /** iterate over all nodes. Starts from current position!
      ** @param  searchIntoSub  flag indicating whether to search into sub-trees
      *                         ("deep search") or on the current level only
@@ -221,13 +234,20 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      *  the navigation methods above do return this ID too.
      ** @return ID of the current node if valid, 0 otherwise
      */
-    size_t getNodeID() const;
+    inline size_t getNodeID() const;
 
     /** get current level.
      *  The level starts with 1 for the root node, then 2 for its child nodes, etc.
      ** @return number of the current level if valid, 0 otherwise
      */
-    size_t getLevel() const;
+    inline size_t getLevel() const;
+
+    /** get reference to internal position counter.
+     *  Please note that this method allows for manipulating the internal position
+     *  counter, so handle with care!
+     ** @return reference to internal position counter
+     */
+    inline DSRPositionCounter &getPositionCounter();
 
     /** get position string of the current node.
      *  Specifies the position of each node by means of a dot separated string of
@@ -240,8 +260,8 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      *  @param  separator  character used to separate the figures (default: '.')
      ** @return reference to the resulting position string (empty if invalid)
      */
-    const OFString &getPosition(OFString &position,
-                                const char separator = '.') const;
+    inline const OFString &getPosition(OFString &position,
+                                       const char separator = '.') const;
 
 
   protected:
@@ -250,8 +270,19 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     void clearNodeCursorStack();
 
+    /** get cursor
+     ** @return reference to cursor (this object)
+     */
+    inline const DSRTreeNodeCursor<T> &getCursor() const;
+
+    /** set cursor to specified object
+     ** @param  cursor  object to set this cursor to
+     */
+    inline void setCursor(const DSRTreeNodeCursor<T> &cursor);
+
     /** set cursor to specified node.
-     *  Clears the internal position list/stack and sets the position counter to 1.
+     *  Clears the internal position counter and sets the position of the current level
+     *  to 1 (if the passed 'node' is valid) or 0 (if the 'node' is invalid).
      ** @param  node  node to which the cursor should be set
      ** @return ID of the new current node if successful, 0 otherwise
      */
@@ -262,10 +293,8 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
     /// stack of node pointers. Used to store the cursor position of upper levels.
     OFStack<T *> NodeCursorStack;
 
-    /// current position within the current level
-    size_t Position;
-    /// list of position counters in upper levels
-    OFList<size_t> PositionList;
+    /// counter for the current position within the current level and on upper levels
+    DSRPositionCounter Position;
 };
 
 
@@ -277,8 +306,7 @@ template<typename T>
 DSRTreeNodeCursor<T>::DSRTreeNodeCursor()
   : NodeCursor(NULL),
     NodeCursorStack(),
-    Position(0),
-    PositionList()
+    Position()
 {
 }
 
@@ -287,19 +315,23 @@ template<typename T>
 DSRTreeNodeCursor<T>::DSRTreeNodeCursor(const DSRTreeNodeCursor<T> &cursor)
   : NodeCursor(cursor.NodeCursor),
     NodeCursorStack(cursor.NodeCursorStack),
-    Position(cursor.Position),
-    PositionList(cursor.PositionList)
+    Position(cursor.Position)
 {
 }
 
 
 template<typename T>
-DSRTreeNodeCursor<T>::DSRTreeNodeCursor(T *node)
+DSRTreeNodeCursor<T>::DSRTreeNodeCursor(T *node,
+                                        const DSRPositionCounter *position)
   : NodeCursor(node),
     NodeCursorStack(),
-    Position((node != NULL) ? 1 : 0),
-    PositionList()
+    Position()
 {
+    /* check whether a valid position counter is given */
+    if ((position != NULL) && position->isValid())
+        Position = *position;
+    else
+        Position.initialize(NodeCursor != NULL);
 }
 
 
@@ -312,11 +344,7 @@ DSRTreeNodeCursor<T>::~DSRTreeNodeCursor()
 template<typename T>
 DSRTreeNodeCursor<T> &DSRTreeNodeCursor<T>::operator=(const DSRTreeNodeCursor<T> &cursor)
 {
-    NodeCursor = cursor.NodeCursor;
-    NodeCursorStack = cursor.NodeCursorStack;
-    Position = cursor.Position;
-    /* copy position list (operator= is not private anymore in class OFList) */
-    PositionList = cursor.PositionList;
+    setCursor(cursor);
     return *this;
 }
 
@@ -334,8 +362,7 @@ void DSRTreeNodeCursor<T>::clear()
 {
     NodeCursor = NULL;
     clearNodeCursorStack();
-    Position = 0;
-    PositionList.clear();
+    Position.clear();
 }
 
 
@@ -417,14 +444,11 @@ T *DSRTreeNodeCursor<T>::getNode() const
 
 
 template<typename T>
-const T *DSRTreeNodeCursor<T>::getParentNode()
+const T *DSRTreeNodeCursor<T>::getParentNode() const
 {
     T *node = NULL;
     if (hasParentNode())
-    {
-        /* this method is not "const" because of OFStack.top() */
         node = NodeCursorStack.top();
-    }
     return node;
 }
 
@@ -459,19 +483,31 @@ const T *DSRTreeNodeCursor<T>::getNextNode() const
 }
 
 
+template<typename T>
+const DSRTreeNodeCursor<T> &DSRTreeNodeCursor<T>::getCursor() const
+{
+    return *this;
+}
+
+
+template<typename T>
+void DSRTreeNodeCursor<T>::setCursor(const DSRTreeNodeCursor<T> &cursor)
+{
+    NodeCursor = cursor.NodeCursor;
+    NodeCursorStack = cursor.NodeCursorStack;
+    Position = cursor.Position;
+}
+
+
 template<typename T>
 size_t DSRTreeNodeCursor<T>::setCursor(T *node)
 {
     size_t nodeID = 0;
     NodeCursor = node;
-    clearNodeCursorStack();
-    PositionList.clear();
     if (NodeCursor != NULL)
-    {
         nodeID = NodeCursor->getIdent();
-        Position = 1;
-    } else
-        Position = 0;
+    clearNodeCursorStack();
+    Position.initialize(NodeCursor != NULL);
     return nodeID;
 }
 
@@ -558,11 +594,7 @@ size_t DSRTreeNodeCursor<T>::goUp()
             {
                 NodeCursor = cursor;
                 nodeID = NodeCursor->getIdent();
-                if (!PositionList.empty())
-                {
-                    Position = PositionList.back();
-                    PositionList.pop_back();
-                }
+                Position.goUp();
             }
         }
     }
@@ -581,17 +613,27 @@ size_t DSRTreeNodeCursor<T>::goDown()
             NodeCursorStack.push(NodeCursor);
             NodeCursor = NodeCursor->getDown();
             nodeID = NodeCursor->getIdent();
-            if (Position > 0)
-            {
-                PositionList.push_back(Position);
-                Position = 1;
-            }
+            Position.goDown();
         }
     }
     return nodeID;
 }
 
 
+template<typename T>
+size_t DSRTreeNodeCursor<T>::gotoParent()
+{
+    return goUp();
+}
+
+
+template<typename T>
+size_t DSRTreeNodeCursor<T>::gotoChild()
+{
+    return goDown();
+}
+
+
 template<typename T>
 size_t DSRTreeNodeCursor<T>::iterate(const OFBool searchIntoSub)
 {
@@ -604,11 +646,7 @@ size_t DSRTreeNodeCursor<T>::iterate(const OFBool searchIntoSub)
             NodeCursorStack.push(NodeCursor);
             NodeCursor = NodeCursor->getDown();
             nodeID = NodeCursor->getIdent();
-            if (Position > 0)
-            {
-                PositionList.push_back(Position);
-                Position = 1;
-            }
+            Position.goDown();
         }
         else if (NodeCursor->getNext() != NULL)
         {
@@ -623,11 +661,7 @@ size_t DSRTreeNodeCursor<T>::iterate(const OFBool searchIntoSub)
                 {
                     NodeCursor = NodeCursorStack.top();
                     NodeCursorStack.pop();
-                    if (!PositionList.empty())
-                    {
-                        Position = PositionList.back();
-                        PositionList.pop_back();
-                    }
+                    Position.goUp();
                 } else
                     NodeCursor = NULL;
             } while ((NodeCursor != NULL) && (NodeCursor->getNext() == NULL));
@@ -747,28 +781,18 @@ size_t DSRTreeNodeCursor<T>::getLevel() const
 }
 
 
+template<typename T>
+DSRPositionCounter &DSRTreeNodeCursor<T>::getPositionCounter()
+{
+    return Position;
+}
+
+
 template<typename T>
 const OFString &DSRTreeNodeCursor<T>::getPosition(OFString &position,
                                                   const char separator) const
 {
-    position.clear();
-    if (Position > 0)
-    {
-        char stringBuf[20];
-        const OFListConstIterator(size_t) endPos = PositionList.end();
-        OFListConstIterator(size_t) iterator = PositionList.begin();
-        while (iterator != endPos)
-        {
-            if (!position.empty())
-                position += separator;
-            position += DSRTypes::numberToString(*iterator, stringBuf);
-            iterator++;
-        }
-        if (!position.empty())
-            position += separator;
-        position += DSRTypes::numberToString(Position, stringBuf);
-    }
-    return position;
+    return Position.getString(position, separator);
 }
 
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtpltn.h b/dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
new file mode 100644 (file)
index 0000000..0803f4c
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRIncludedTemplateTreeNode
+ *
+ */
+
+
+#ifndef DSRTPLTN_H
+#define DSRTPLTN_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrdoctn.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class for managing included templates (internal)
+ */
+class DCMTK_DCMSR_EXPORT DSRIncludedTemplateTreeNode
+  : public DSRDocumentTreeNode
+{
+
+  public:
+
+    /** constructor.
+     *  Also sets the template identification if available from 'referencedTemplate'.
+     ** @param  referencedTemplate  shared pointer to template that should be managed
+     *  @param  defaultRelType      default relationship type of the included template
+     */
+    DSRIncludedTemplateTreeNode(const DSRSharedSubTemplate &referencedTemplate,
+                                const E_RelationshipType defaultRelType);
+
+    /** copy constructor.
+     *  Please note that the comments on the copy constructor of the base class
+     *  DSRDocumentTreeNode apply.
+     ** @param  node  tree node to be copied
+     */
+    DSRIncludedTemplateTreeNode(const DSRIncludedTemplateTreeNode &node);
+
+    /** destructor
+     */
+    virtual ~DSRIncludedTemplateTreeNode();
+
+    /** clone this tree node.
+     *  Internally, the copy constructor is used, so the corresponding comments apply.
+     ** @return copy of this tree node
+     */
+    virtual DSRIncludedTemplateTreeNode *clone() const;
+
+    /** clear all member variables.
+     *  Please note that the content item becomes invalid afterwards.
+     */
+    virtual void clear();
+
+    /** check whether the content item is valid.
+     *  The content item is valid if the base class is valid and the reference to the
+     *  included template is valid.
+     ** @return OFTrue if tree node is valid, OFFalse otherwise
+     */
+    virtual OFBool isValid() const;
+
+    /** check whether the value of the content item, i.e.\ the reference to the included
+     *  template is valid.  See getValue().
+     ** @return OFTrue if the value is valid, OFFalse otherwise
+     */
+    virtual OFBool hasValidValue() const;
+
+    /** check whether the content is short.
+     *  This method is used to check whether the rendered output of this content item can
+     *  be expanded inline or not (used for renderHTML()).
+     ** @param  flags  flag used to customize the output (see DSRTypes::HF_xxx)
+     ** @return OFTrue if the content is short, OFFalse otherwise
+     */
+    virtual OFBool isShort(const size_t flags) const;
+
+    /** print content item.
+     *  A typical output looks like this: # INCLUDE TID 1600 (DCMR)
+     ** @param  stream  output stream to which the content item should be printed
+     *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition print(STD_NAMESPACE ostream &stream,
+                              const size_t flags) const;
+
+    /** write content of included template in XML format
+     ** @param  stream  output stream to which the XML document is written
+     *  @param  flags   flag used to customize the output (see DSRTypes::XF_xxx)
+     ** @return status, EC_Normal if successful (or included template is empty, so there
+     *          is nothing to do), an error code otherwise
+     */
+    virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
+                                 const size_t flags) const;
+
+    /** get reference to included template, i.e.\ the value of this content item
+     ** @return reference to included template.  The managed pointer might be NULL.
+     */
+    inline const DSRSharedSubTemplate &getValue() const
+    {
+        return ReferencedTemplate;
+    }
+
+    /** set reference to included template, i.e.\ the value of this content item.
+     *  Currently, no checks are performed on the passed 'referencedTemplate' parameter.
+     ** @param  referencedTemplate  shared pointer to template that should be managed
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setValue(const DSRSharedSubTemplate &referencedTemplate);
+
+
+  protected:
+
+    /** read content item from dataset
+     ** @param  dataset            dummy parameter
+     *  @param  constraintChecker  dummy parameter
+     *  @param  flags              dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition read(DcmItem &dataset,
+                             const DSRIODConstraintChecker *constraintChecker,
+                             const size_t flags);
+
+    /** write content item to dataset
+     ** @param  dataset      dummy parameter
+     *  @param  markedItems  dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition write(DcmItem &dataset,
+                              DcmStack *markedItems = NULL);
+
+    /** read general XML document tree node data
+     ** @param  doc           dummy parameter
+     *  @param  cursor        dummy parameter
+     *  @param  documentType  dummy parameter
+     *  @param  flags         dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition readXML(const DSRXMLDocument &doc,
+                                DSRXMLCursor cursor,
+                                const E_DocumentType documentType,
+                                const size_t flags);
+
+    /** render content item in HTML/XHTML format
+     ** @param  docStream     dummy parameter
+     *  @param  annexStream   dummy parameter
+     *  @param  nestingLevel  dummy parameter
+     *  @param  annexNumber   dummy parameter
+     *  @param  flags         dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition renderHTML(STD_NAMESPACE ostream &docStream,
+                                   STD_NAMESPACE ostream &annexStream,
+                                   const size_t nestingLevel,
+                                   size_t &annexNumber,
+                                   const size_t flags) const;
+
+    /** set the concept name
+     ** @param  conceptName  dummy parameter
+     *  @param  check        dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setConceptName(const DSRCodedEntryValue &conceptName,
+                                       const OFBool check = OFTrue);
+
+    /** set observation date/time
+     ** @param  observationDateTime  dummy parameter
+     *  @param  check                dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationDateTime(const OFString &observationDateTime,
+                                               const OFBool check = OFTrue);
+
+    /** set observation date/time from element
+     ** @param  delem  dummy parameter
+     *  @param  pos    dummy parameter
+     *  @param  check  dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationDateTime(const DcmElement &delem,
+                                               const unsigned long pos = 0,
+                                               const OFBool check = OFTrue);
+
+    /** set observation date/time from dataset
+     ** @param  dataset  dummy parameter
+     *  @param  tagKey   dummy parameter
+     *  @param  pos      dummy parameter
+     *  @param  check    dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationDateTime(DcmItem &dataset,
+                                               const DcmTagKey &tagKey,
+                                               const unsigned long pos = 0,
+                                               const OFBool check = OFTrue);
+
+    /** set observation unique identifier
+     ** @param  observationUID  dummy parameter
+     *  @param  check           dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationUID(const OFString &observationUID,
+                                          const OFBool check = OFTrue);
+
+    /** set template identifier and mapping resource
+     ** @param  templateIdentifier  dummy parameter
+     *  @param  mappingResource     dummy parameter
+     *  @param  mappingResourceUID  dummy parameter
+     *  @param  check               dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setTemplateIdentification(const OFString &templateIdentifier,
+                                                  const OFString &mappingResource,
+                                                  const OFString &mappingResourceUID = "",
+                                                  const OFBool check = OFTrue);
+
+
+  private:
+
+    /// shared pointer to included template that is managed by this class
+    DSRSharedSubTemplate ReferencedTemplate;
+
+
+ // --- declaration of default constructor and assignment operator
+
+    DSRIncludedTemplateTreeNode();
+    DSRIncludedTemplateTreeNode &operator=(const DSRIncludedTemplateTreeNode &);
+};
+
+
+#endif
index 40ff00ef1f9feac8a95d0d4488be870654a7f94b..86d1b7e51757b9b8d31c30a581225ab105bf871d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -224,7 +224,7 @@ template<typename T = DSRTreeNode> class DSRTree
     /** check whether tree has any nodes
      ** @return OFTrue if tree is empty, OFFalse otherwise
      */
-    OFBool isEmpty() const;
+    inline OFBool isEmpty() const;
 
     /** count number of nodes in the tree.
      *  This method iterates over all nodes that are stored in the tree.
@@ -236,12 +236,12 @@ template<typename T = DSRTreeNode> class DSRTree
      *  The node ID uniquely identifies a content item in the document tree.
      ** @return ID of the next node to be created (should never be 0)
      */
-    size_t getNextNodeID() const;
+    inline size_t getNextNodeID() const;
 
     /** set internal cursor to root node
      ** @return ID of root node if successful, 0 otherwise
      */
-    size_t gotoRoot();
+    inline size_t gotoRoot();
 
     /** set internal cursor to specified node
      ** @param  searchID       ID of the node to set the cursor to
@@ -275,14 +275,24 @@ template<typename T = DSRTreeNode> class DSRTree
     /** add new node to the current one.
      *  Please note that no copy of the given node is created.  Therefore, the node
      *  should be created with new() - do not use a reference to a local variable.
-     *  If the node could be added successfully the cursor is set to it automatically.
+     *  If the node could be added successfully, the cursor is set to it automatically.
      ** @param  node     pointer to the new node to be added
      *  @param  addMode  flag specifying at which position to add the new node
-     ** @return ID of the new added node if successful, 0 otherwise
+     ** @return ID of the new node if successful, 0 otherwise
      */
     virtual size_t addNode(T *node,
                            const E_AddMode addMode = AM_afterCurrent);
 
+    /** replace current node by the given one.
+     *  Please note that no copy of the given node is created.  Therefore, the node
+     *  should be created with new() - do not use a reference to a local variable.  If
+     *  the node could be replaced successfully, the "old" node (and all of its child
+     *  nodes) are deleted, and the cursor is set to the new one.
+     ** @param  node  pointer to the new node to replace the current one
+     ** @return ID of the new node if successful, 0 otherwise
+     */
+    virtual size_t replaceNode(T *node);
+
     /** extract current node from tree.
      *  Please note that not only the specified node but also all of its child nodes are
      *  extracted from the tree.  The cursor is set automatically to a new valid position.
@@ -348,6 +358,12 @@ template<typename T = DSRTreeNode> class DSRTree
      */
     virtual T *getRoot() const;
 
+    /** delete a tree given by its root node.
+     *  Please note that the given 'rootNode' pointer becomes invalid afterwards.
+     ** @param  rootNode  pointer to the root node of the tree to be deleted
+     */
+    virtual void deleteTreeFromRootNode(T *rootNode);
+
 
   private:
 
@@ -549,12 +565,9 @@ void DSRTree<T>::clearAnnotations()
     DSRTreeNodeCursor<T> cursor(RootNode);
     if (cursor.isValid())
     {
-        T *node;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                node->clearAnnotation();
+            cursor.getNode()->clearAnnotation();
         } while (cursor.iterate());
     }
 }
@@ -684,14 +697,13 @@ size_t DSRTree<T>::addNode(T *node,
                     else if (!this->NodeCursorStack.empty() && (this->Position == 1))
                         this->NodeCursorStack.top()->Down = node;
                     this->NodeCursor->Prev = lastNode;
+                    /* check whether root node has been replaced */
+                    if (this->NodeCursor == this->RootNode)
+                        this->RootNode = node;
                     break;
                 case AM_belowCurrent:
                     /* store old position */
-                    if (this->Position > 0)
-                    {
-                        this->PositionList.push_back(this->Position);
-                        this->Position = 1;
-                    }
+                    this->Position.goDown();
                     this->NodeCursorStack.push(this->NodeCursor);
                     /* parent node has already child nodes */
                     if (this->NodeCursor->Down != NULL)
@@ -712,11 +724,7 @@ size_t DSRTree<T>::addNode(T *node,
                     break;
                 case AM_belowCurrentBeforeFirstChild:
                     /* store old position */
-                    if (this->Position > 0)
-                    {
-                        this->PositionList.push_back(this->Position);
-                        this->Position = 1;
-                    }
+                    this->Position.goDown();
                     this->NodeCursorStack.push(this->NodeCursor);
                     /* parent node has already child nodes */
                     if (this->NodeCursor->Down != NULL)
@@ -733,8 +741,9 @@ size_t DSRTree<T>::addNode(T *node,
             }
             this->NodeCursor = node;
         } else {
+            /* originally, the tree was empty */
             this->RootNode = this->NodeCursor = node;
-            this->Position = 1;
+            this->Position.initialize();
         }
         nodeID = this->NodeCursor->getIdent();
     }
@@ -742,6 +751,56 @@ size_t DSRTree<T>::addNode(T *node,
 }
 
 
+template<typename T>
+size_t DSRTree<T>::replaceNode(T *node)
+{
+    size_t nodeID = 0;
+    /* make sure that 'node' points to a single node or to the "root" of a subtree */
+    if ((node != NULL) && (node->Prev == NULL))
+    {
+        if (this->NodeCursor != NULL)
+        {
+            /* connect to previous node */
+            if (this->NodeCursor->Prev != NULL)
+            {
+                (this->NodeCursor->Prev)->Next = node;
+                /* remove reference to former sibling */
+                this->NodeCursor->Prev = NULL;
+            } else {
+                /* is there any direct parent node? */
+                if (!this->NodeCursorStack.empty())
+                {
+                    DSRTreeNode *parent = this->NodeCursorStack.top();
+                    if (parent != NULL)
+                        parent->Down = node;
+                }
+            }
+            /* connect to next node */
+            if (this->NodeCursor->Next != NULL)
+            {
+                DSRTreeNode *lastNode = node;
+                /* goto last node (sibling), if any */
+                while (lastNode->Next != NULL)
+                    lastNode = lastNode->Next;
+                (this->NodeCursor->Next)->Prev = lastNode;
+                lastNode->Next = this->NodeCursor->Next;
+                /* remove reference to former sibling */
+                this->NodeCursor->Next = NULL;
+            }
+            /* check whether root node has been replaced */
+            if (this->NodeCursor == this->RootNode)
+                this->RootNode = node;
+            /* free memory of old (now replaced) node */
+            deleteTreeFromRootNode(this->NodeCursor);
+            /* set cursor to new node */
+            this->NodeCursor = node;
+            nodeID = node->getIdent();
+        }
+    }
+    return nodeID;
+}
+
+
 template<typename T>
 T *DSRTree<T>::extractNode()
 {
@@ -783,20 +842,18 @@ T *DSRTree<T>::extractNode()
             {
                 this->NodeCursor = this->NodeCursorStack.top();
                 this->NodeCursorStack.pop();
-                this->Position = this->PositionList.back();
-                this->PositionList.pop_back();
+                this->Position.goUp();
                 /* should never be NULL, but ... */
                 if (this->NodeCursor != NULL)
                     this->NodeCursor->Down = NULL;
                 else
                 {
                     this->RootNode = NULL;                  // tree is now empty
-                    this->Position = 0;
+                    this->Position.clear();
                 }
             } else {
                 this->RootNode = this->NodeCursor = NULL;   // tree is now empty
-                this->Position = 0;
-                this->PositionList.clear();
+                this->Position.clear();
             }
         }
         /* remove references to former siblings */
@@ -893,4 +950,13 @@ T *DSRTree<T>::getRoot() const
 }
 
 
+template<typename T>
+void DSRTree<T>::deleteTreeFromRootNode(T *rootNode)
+{
+    /* create a temporary tree object from the given node, */
+    /* the content will be deleted during destruction */
+    DSRTree<T> tree(rootNode);
+}
+
+
 #endif
index 2152db5cb5bc73d1978e7c6bb2aa5e9d26ae1b3b..4eb327da692487489778c91c0647a822692caf47 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -213,6 +213,15 @@ extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_CodedEntryInStandardConte
 /// normal: a given coded entry is known as an extension of the context group
 extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_CodedEntryIsExtensionOfContextGroup;
 
+/// error: a value violates the value set constraint of a particular template row
+extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_ValueSetConstraintViolated;
+
+/// error: the internally managed structure of a template class is invalid
+extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_InvalidTemplateStructure;
+
+/// error: cannot process document tree with included templates
+extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_CannotProcessIncludedTemplates;
+
 //@}
 
 
@@ -381,6 +390,9 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     /// read/write: template identification element encloses content items
     static const size_t XF_templateElementEnclosesItems;
 
+    /// write: add comments with details at beginning/end of included template (might be useful for debugging purposes)
+    static const size_t XF_addCommentsForIncludedTemplate;
+
     /// shortcut: combines all XF_xxxAsAttribute write flags (see above)
     static const size_t XF_encodeEverythingAsAttribute;
     //@}
@@ -431,6 +443,9 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     /// print annotation of a content item (optional, e.g. user-defined information)
     static const size_t PF_printAnnotation;
 
+    /// do not print internal "included template" nodes (position counter is still increased)
+    static const size_t PF_hideIncludedTemplateNodes;
+
     /// shortcut: print all codes (combines all PF_printXxxCodes flags, see above)
     static const size_t PF_printAllCodes;
     //@}
@@ -492,8 +507,10 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         DT_RadiopharmaceuticalRadiationDoseSR,
         /// DICOM IOD: Extensible SR (not yet implemented)
         DT_ExtensibleSR,
+        /// DICOM IOD: Acquisition Context SR
+        DT_AcquisitionContextSR,
         /// internal type used to mark the last entry
-        DT_last = DT_ExtensibleSR
+        DT_last = DT_AcquisitionContextSR
     };
 
     /** SR relationship types
@@ -562,8 +579,10 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         VT_Container,
         /// internal type used to indicate by-reference relationships
         VT_byReference,
+        /// internal type used to indicate (enclose) included templates
+        VT_includedTemplate,
         /// internal type used to mark the last entry
-        VT_last = VT_byReference
+        VT_last = VT_includedTemplate
     };
 
     /** Softcopy presentation state types.  Used for content item IMAGE.
@@ -746,10 +765,18 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         CS_Hebrew,
         /// ISO-IR 148: Latin alphabet No. 5
         CS_Latin5,
-        /// ISO-IR 13: Japanese (Katakana/Romaji)
-        CS_Japanese,
         /// ISO-IR 166: Thai
         CS_Thai,
+        /// ISO-IR 13/87: Japanese (Katakana/Romaji/Kanji)
+        CS_Japanese,
+        /// ISO-IR 6/149: Korean (Hangul/Hanja)
+        CS_Korean,
+        /// ISO-IR 6/58: Chinese
+        CS_ChineseISO,
+        /// GB18030: Chinese
+        CS_ChineseGB18030,
+        /// GBK: Chinese
+        CS_ChineseGBK,
         /// UTF-8: Unicode in UTF-8
         CS_UTF8,
         /// internal type used to mark the last entry
index 767d659522571b8b37b6bf17dbfb1fe6121388a0..5af36b0700f9d7a6f6613ca939089c11f8cbe190 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -91,8 +91,8 @@ class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue
     virtual OFBool isShort(const size_t flags) const;
 
     /** print waveform reference.
-     *  The output of a typical waveform reference value looks like this: (HemodynamicWaveform
-     *  Storage,"1.2.3")
+     *  The output of a typical waveform reference value looks like this:
+     *  (HemodynamicWaveformStorage,"1.2.3")
      *  If the SOP class UID is unknown, the UID is printed instead of the related name.
      ** @param  stream  output stream to which the image reference value should be printed
      *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
@@ -204,7 +204,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue
     /** check the specified SOP class UID for validity.
      *  This method further specializes the checks performed in the base class
      *  DSRCompositeReferenceValue.  All waveform SOP classes that are defined
-     *  in DICOM PS 3.6-2014a are allowed.
+     *  in DICOM PS 3.6-2015c are allowed.
      ** @param  sopClassUID  SOP class UID to be checked
      ** @return status, EC_Normal if value is valid, an error code otherwise
      */
index 0f7efa4a74bd9c27f805ce53424d930e6e8fbbb0..5b1fb82e8cd6adf2fe4b9e58d6989885a5001448 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2005-2014, OFFIS e.V.
+ *  Copyright (C) 2005-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the X-Ray Radiation Dose SR IOD
+/** Class for checking the relationship content constraints of the X-Ray Radiation Dose
+ *  SR IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 10001
+ *  (Projection X-Ray Radiation Dose) or Baseline TID 10011 (CT Radiation Dose) invoked
+ *  at the root node.  Note: This IOD maybe used with other Templates defined for Dose
+ *  Reporting.  Such other Templates may be specialized for specific modalities or
+ *  future dose measurement techniques."
  */
 class DCMTK_DCMSR_EXPORT DSRXRayRadiationDoseSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +65,14 @@ class DCMTK_DCMSR_EXPORT DSRXRayRadiationDoseSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** get identifier and mapping resource of the root template (if any)
+     ** @param  templateIdentifier  identifier of the root template (might be empty)
+     *  @param  mappingResource     mapping resource that defines the root template
+     *                              (might be empty)
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_XRayRadiationDoseSR)
index c31fd8f903f794cad87d1b45646da90c09664559..8c670bae06d67257d0a45f92b4f530d154245f96 100644 (file)
@@ -1,4 +1,4 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(cmr init logger srnumvl tid1001 tid1204 tid1600 cid11 cid29 cid29e cid42 cid100 cid244 cid244e cid4020 cid4021 cid4031 cid4031e cid5000 cid5001 cid7021 cid7445 cid7452 cid7453 cid10013 cid10013e cid10033 cid10033e)
+DCMTK_ADD_LIBRARY(cmr init logger srnumvl tid1001 tid1204 tid1411 tid1500 tid1600 cid11 cid29 cid29e cid42 cid100 cid244 cid244e cid4020 cid4021 cid4031 cid4031e cid5000 cid5001 cid6147 cid7021 cid7181 cid7445 cid7452 cid7453 cid7464 cid7469 cid10013 cid10013e cid10033 cid10033e)
 
 DCMTK_TARGET_LINK_MODULES(cmr dcmsr)
index 8e8a32e773f20bc5e527e6cf9c91f79d16cc1c81..69f525a86c0033d8f69cf05e99ed3ebd46186979 100644 (file)
@@ -41,6 +41,8 @@ cid100.o: cid100.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -109,6 +111,7 @@ cid100.o: cid100.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -156,6 +159,8 @@ cid10013.o: cid10013.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -224,6 +229,7 @@ cid10013.o: cid10013.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -272,6 +278,8 @@ cid10013e.o: cid10013e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -340,6 +348,7 @@ cid10013e.o: cid10013e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -387,6 +396,8 @@ cid10033.o: cid10033.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -455,6 +466,7 @@ cid10033.o: cid10033.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -503,6 +515,8 @@ cid10033e.o: cid10033e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -571,6 +585,7 @@ cid10033e.o: cid10033e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -618,6 +633,8 @@ cid11.o: cid11.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -686,6 +703,7 @@ cid11.o: cid11.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -733,6 +751,8 @@ cid244.o: cid244.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -801,6 +821,7 @@ cid244.o: cid244.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -849,6 +870,8 @@ cid244e.o: cid244e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -917,6 +940,7 @@ cid244e.o: cid244e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -964,6 +988,8 @@ cid29.o: cid29.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1032,6 +1058,7 @@ cid29.o: cid29.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1080,6 +1107,8 @@ cid29e.o: cid29e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1148,6 +1177,7 @@ cid29e.o: cid29e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1195,6 +1225,8 @@ cid4020.o: cid4020.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1263,6 +1295,7 @@ cid4020.o: cid4020.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1310,6 +1343,8 @@ cid4021.o: cid4021.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1378,6 +1413,7 @@ cid4021.o: cid4021.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1425,6 +1461,8 @@ cid4031.o: cid4031.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1493,6 +1531,7 @@ cid4031.o: cid4031.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1541,6 +1580,8 @@ cid4031e.o: cid4031e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1609,6 +1650,7 @@ cid4031e.o: cid4031e.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1656,6 +1698,8 @@ cid42.o: cid42.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1724,6 +1768,7 @@ cid42.o: cid42.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1771,6 +1816,8 @@ cid5000.o: cid5000.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1839,6 +1886,7 @@ cid5000.o: cid5000.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1886,6 +1934,8 @@ cid5001.o: cid5001.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1954,6 +2004,125 @@ cid5001.o: cid5001.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid6147.o: cid6147.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -2001,6 +2170,480 @@ cid7021.o: cid7021.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7181.o: cid7181.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7445.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2069,12 +2712,13 @@ cid7021.o: cid7021.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/cmr/define.h
-cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/cid7445.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+cid7464.o: cid7464.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -2116,6 +2760,8 @@ cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2184,12 +2830,13 @@ cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/cmr/define.h
-cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/cid7452.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+cid7469.o: cid7469.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -2231,6 +2878,8 @@ cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2299,22 +2948,24 @@ cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/cmr/define.h
-cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+init.o: init.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/init.h ../include/dcmtk/dcmsr/cmr/define.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../include/dcmtk/dcmsr/cmr/cid11.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
- ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofcast.h \
- ../../ofstd/include/dcmtk/ofstd/ofexport.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
@@ -2346,6 +2997,8 @@ cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2414,23 +3067,82 @@ cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/cmr/define.h
-init.o: init.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/init.h ../include/dcmtk/dcmsr/cmr/define.h \
+ ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/cmr/cid100.h ../include/dcmtk/dcmsr/cmr/cid244.h \
+ ../include/dcmtk/dcmsr/cmr/cid4020.h \
+ ../include/dcmtk/dcmsr/cmr/cid4021.h \
+ ../include/dcmtk/dcmsr/cmr/cid4031.h \
+ ../include/dcmtk/dcmsr/cmr/cid5000.h \
+ ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7021.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
+ ../include/dcmtk/dcmsr/cmr/cid7445.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h \
+ ../include/dcmtk/dcmsr/cmr/cid10013.h \
+ ../include/dcmtk/dcmsr/cmr/cid10033.h
+logger.o: logger.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../include/dcmtk/dcmsr/cmr/cid11.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
@@ -2462,6 +3174,8 @@ init.o: init.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2530,24 +3244,18 @@ init.o: init.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/cmr/cid42.h \
- ../include/dcmtk/dcmsr/cmr/cid100.h ../include/dcmtk/dcmsr/cmr/cid244.h \
- ../include/dcmtk/dcmsr/cmr/cid4020.h \
- ../include/dcmtk/dcmsr/cmr/cid4021.h \
- ../include/dcmtk/dcmsr/cmr/cid4031.h \
- ../include/dcmtk/dcmsr/cmr/cid5000.h \
- ../include/dcmtk/dcmsr/cmr/cid5001.h \
- ../include/dcmtk/dcmsr/cmr/cid7021.h \
- ../include/dcmtk/dcmsr/cmr/cid7445.h \
- ../include/dcmtk/dcmsr/cmr/cid7452.h \
- ../include/dcmtk/dcmsr/cmr/cid7453.h \
- ../include/dcmtk/dcmsr/cmr/cid10013.h \
- ../include/dcmtk/dcmsr/cmr/cid10033.h
-logger.o: logger.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../include/dcmtk/dcmsr/cmr/cid42.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1001.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
+ ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -2586,10 +3294,100 @@ logger.o: logger.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../include/dcmtk/dcmsr/cmr/define.h
-srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/dsrnumvl.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
+ ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
+ ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
+ ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
+ ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
+ ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
+ ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid7445.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/codes/dcm.h
+tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1204.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
+ ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -2630,6 +3428,8 @@ srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2698,13 +3498,28 @@ srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmsr/dsdefine.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/cmr/cid42.h ../include/dcmtk/dcmsr/dsrctxgr.h \
- ../include/dcmtk/dcmsr/cmr/define.h
-tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/tid1001.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
+ ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
+ ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
+ ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
+ ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
+ ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
+ ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid5000.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/codes/dcm.h
+tid1411.o: tid1411.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1411.h ../include/dcmtk/dcmsr/dsrstpl.h \
  ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -2747,6 +3562,8 @@ tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2815,11 +3632,12 @@ tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2829,12 +3647,19 @@ tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
- ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid7445.h \
- ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid7452.h \
- ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/codes/dcm.h
-tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/tid1204.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvlu.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../include/dcmtk/dcmsr/codes/dcm.h ../include/dcmtk/dcmsr/codes/ncit.h \
+ ../include/dcmtk/dcmsr/codes/srt.h ../include/dcmtk/dcmsr/codes/umls.h
+tid1500.o: tid1500.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1500.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -2877,6 +3702,8 @@ tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2945,11 +3772,12 @@ tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2959,10 +3787,29 @@ tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
- ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid5000.h \
- ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid5001.h \
- ../include/dcmtk/dcmsr/codes/dcm.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsrstpl.h ../include/dcmtk/dcmsr/cmr/define.h \
+ ../include/dcmtk/dcmsr/cmr/tid1001.h \
+ ../include/dcmtk/dcmsr/cmr/cid7445.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h \
+ ../include/dcmtk/dcmsr/cmr/tid1204.h \
+ ../include/dcmtk/dcmsr/cmr/cid5000.h \
+ ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/cmr/tid1411.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvlu.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/cmr/tid1600.h \
+ ../include/dcmtk/dcmsr/cmr/cid4020.h \
+ ../include/dcmtk/dcmsr/cmr/cid4021.h ../include/dcmtk/dcmsr/cmr/cid100.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7021.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../include/dcmtk/dcmsr/codes/dcm.h ../include/dcmtk/dcmsr/codes/umls.h \
+ ../include/dcmtk/dcmsr/dsrtpltn.h
 tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/cmr/tid1600.h ../include/dcmtk/dcmsr/dsrstpl.h \
  ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
@@ -3007,6 +3854,8 @@ tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3075,11 +3924,12 @@ tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -3089,9 +3939,12 @@ tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
- ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid29e.h \
- ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid4020.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid4021.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/cmr/cid29e.h ../include/dcmtk/dcmsr/cmr/cid29.h \
  ../include/dcmtk/dcmsr/cmr/cid244e.h ../include/dcmtk/dcmsr/cmr/cid244.h \
  ../include/dcmtk/dcmsr/cmr/cid4031e.h \
  ../include/dcmtk/dcmsr/cmr/cid4031.h \
index 9ecf36fa02e957a86bac4f064554abb05e02201f..f0ea99413135b34311cc7e7b4c139e48cfa9eef5 100644 (file)
@@ -21,10 +21,11 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
        -I$(dcmsr)/include
 LOCALDEFS =
 
-objs = init.o logger.o srnumvl.o tid1001.o tid1204.o tid1600.o \
+objs = init.o logger.o srnumvl.o tid1001.o tid1204.o tid1411.o tid1500.o tid1600.o \
        cid11.o cid29.o cid29e.o cid42.o cid100.o cid244.o cid244e.o cid4020.o \
-       cid4021.o cid4031.o cid4031e.o cid5000.o cid5001.o cid7021.o cid7445.o \
-       cid7452.o cid7453.o cid10013.o cid10013e.o cid10033.o cid10033e.o
+       cid4021.o cid4031.o cid4031e.o cid5000.o cid5001.o cid6147.o cid7021.o \
+       cid7181.o cid7445.o cid7452.o cid7453.o cid7464.o cid7469.o cid10013.o \
+       cid10013e.o cid10033.o cid10033e.o
 library = libcmr.$(LIBEXT)
 
 
index 01647574856c999edbee97c12e4c5f8a41a3c2b1..b24376af922a25c2ce7bc702d91a783f4a66c69c 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID100_QuantitativeDiagnosticImagingProcedures
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:54:59 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:42 by J. Riesmeier
  *
  */
 
@@ -160,7 +160,7 @@ CID100_QuantitativeDiagnosticImagingProcedures::CodeList &CID100_QuantitativeDia
         Codes->insert(OFMake_pair(PETCT_METImagingOfWholeBody, DSRBasicCodedEntry("P5-08118", "SRT", "PET/CT MET imaging of whole body")));
         Codes->insert(OFMake_pair(CT_HEAD_PERFUSION_WITH_IV_CONTRAST, DSRBasicCodedEntry("RPID96", "RADLEX", "CT HEAD PERFUSION WITH IV CONTRAST")));
         Codes->insert(OFMake_pair(NM_HEAD_PERFUSION_BRAIN_SPECT, DSRBasicCodedEntry("RPID5258", "RADLEX", "NM HEAD PERFUSION BRAIN SPECT")));
-        Codes->insert(OFMake_pair(NM_HEAD_PERFUSION_BRAIN_PET_CT_AV_45, DSRBasicCodedEntry("RPID5427", "RADLEX", "NM HEAD PERFUSION BRAIN PET-CT AV-45")));
+        Codes->insert(OFMake_pair(NM_HEAD_PERFUSION_BRAIN_PET_CT_AV45, DSRBasicCodedEntry("RPID5427", "RADLEX", "NM HEAD PERFUSION BRAIN PET-CT AV-45")));
     }
     /* should never be NULL */
     return *Codes;
index 66ed492d33b36623cc2a379d5553d02c51acdf94..2c3837c84e54b11583e5e24914f37348cfd975cd 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID10013_CTAcquisitionType
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:14 by J. Riesmeier
+ *  File created on 2016-01-08 15:05:05 by J. Riesmeier
  *
  */
 
index 0e09a0cfa468860fd8218f3d184b9e1df9753be8..f5c2b3b16e4a4da2379e962d3b5bf9f736086ef2 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID10033_CTReconstructionAlgorithm
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:16 by J. Riesmeier
+ *  File created on 2016-01-08 15:05:06 by J. Riesmeier
  *
  */
 
index 0a7042801714daef33406dbafaaadf7e674277fd..a4088f2ff2edbc0b91d46527cb0a93eb508e336a 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID11_RouteOfAdministration
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:24:57 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:37 by J. Riesmeier
  *
  */
 
index 497e1e6d239046bb3a613368d7257491b000c387..58618c5869acaa5aeff71f522788067cfafef259 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID244_Laterality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:02 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:44 by J. Riesmeier
  *
  */
 
index 873ff0e7521fdbcfb40ac6ff45f00830427c50d5..debe234d6c94df18418e970b48e59fbbed7312d6 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID29_AcquisitionModality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:24:58 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:39 by J. Riesmeier
  *
  */
 
index f8921dad3c507db2d15fdeff953112947012f456..8cf0e72cca5248013a2f6eb9de41c1eb1cd5b5dc 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4020_PETRadionuclide
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:03 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:46 by J. Riesmeier
  *
  */
 
index 51ebb2c6645dbe12efbd854209e9f323e958a6f4..943d855d668cbe68e18c62edc52516d7188b0df2 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4021_PETRadiopharmaceutical
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:05 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:47 by J. Riesmeier
  *
  */
 
index 15564a2c3034b15fc6a691c84298a29370c7929a..7440c620899486f47a9c083bce9dc20e8ca57df6 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4031_CommonAnatomicRegions
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:07 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:49 by J. Riesmeier
  *
  */
 
index 1756f838da02967aa71817cd088c466b658d33db..35d336ce9dc2c681cab6b76af0e468a3a165f492 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID42_NumericValueQualifier
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:00 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:41 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid6147.cc b/dcmsr/libcmr/cid6147.cc
new file mode 100644 (file)
index 0000000..476d940
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class CID6147_ResponseCriteria
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-08 15:04:51 by J. Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/cid6147.h"
+
+
+// general information on CID 6147 (Response Criteria)
+#define CONTEXT_GROUP_NUMBER  "6147"
+#define CONTEXT_GROUP_VERSION "20141110"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.1004"
+#define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
+
+// initialize global/static variable
+CID6147_ResponseCriteria::CodeList *CID6147_ResponseCriteria::Codes = NULL;
+
+
+CID6147_ResponseCriteria::CID6147_ResponseCriteria(const DSRCodedEntryValue &selectedValue)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+CID6147_ResponseCriteria::CID6147_ResponseCriteria(const EnumType selectedValue,
+                                                   const OFBool enhancedEncodingMode)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+OFCondition CID6147_ResponseCriteria::selectValue(const EnumType selectedValue,
+                                                  const OFBool enhancedEncodingMode)
+{
+    /* never check the coded entry */
+    return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
+}
+
+
+OFCondition CID6147_ResponseCriteria::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                     DSRCodedEntryValue *foundCodedEntry,
+                                                     const OFBool enhancedEncodingMode) const
+{
+    OFCondition result = SR_EC_CodedEntryNotInContextGroup;
+    /* first, search for standard codes */
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        /* if found, exit loop */
+        if (searchForCodedEntry == iter->second)
+        {
+            /* return coded entry (if requested) */
+            if (foundCodedEntry != NULL)
+            {
+                *foundCodedEntry = iter->second;
+                /* also set enhanced encoding mode (if enabled) */
+                if (!foundCodedEntry->isEmpty() && enhancedEncodingMode)
+                    setEnhancedEncodingMode(*foundCodedEntry);
+            }
+            result = SR_EC_CodedEntryInStandardContextGroup;
+            break;
+        }
+        ++iter;
+    }
+    /* if not, continue with extended codes */
+    if (result.bad())
+    {
+        result = DSRContextGroup::findCodedEntry(searchForCodedEntry, foundCodedEntry);
+        /* tbd: set "enhanced encoding mode" to mark a local/extended version? */
+    }
+    return result;
+}
+
+
+void CID6147_ResponseCriteria::printCodes(STD_NAMESPACE ostream &stream) const
+{
+    /* print standard codes */
+    stream << "Standard codes:" << OFendl;
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        stream << "  ";
+        /* print coded entry */
+        DSRCodedEntryValue(iter->second).print(stream);
+        stream << OFendl;
+        ++iter;
+    }
+    /* print extended codes */
+    DSRContextGroup::printCodes(stream);
+}
+
+
+// static functions
+
+void CID6147_ResponseCriteria::initialize()
+{
+    /* create and initialize code list */
+    getCodes();
+}
+
+
+void CID6147_ResponseCriteria::cleanup()
+{
+    /* delete code list, it will be recreated automatically when needed */
+    delete Codes;
+    Codes = NULL;
+}
+
+
+DSRCodedEntryValue CID6147_ResponseCriteria::getCodedEntry(const EnumType value,
+                                                           const OFBool enhancedEncodingMode)
+{
+    DSRCodedEntryValue codedEntry;
+    /* search for given enumerated value */
+    CodeList::iterator iter = getCodes().find(value);
+    /* if found, set the coded entry */
+    if (iter != getCodes().end())
+    {
+        codedEntry = iter->second;
+        /* also set enhanced encoding mode (if enabled) */
+        if (!codedEntry.isEmpty() && enhancedEncodingMode)
+            setEnhancedEncodingMode(codedEntry);
+    }
+    return codedEntry;
+}
+
+
+CID6147_ResponseCriteria::CodeList &CID6147_ResponseCriteria::getCodes()
+{
+    /* check whether code list has already been created and initialized */
+    if (Codes == NULL)
+    {
+        /* create a new code list (should never fail) */
+        Codes = new CodeList();
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(WHO, DSRBasicCodedEntry("112029", "DCM", "WHO")));
+        Codes->insert(OFMake_pair(RECIST10, DSRBasicCodedEntry("126080", "DCM", "RECIST 1.0")));
+        Codes->insert(OFMake_pair(RECIST11, DSRBasicCodedEntry("126081", "DCM", "RECIST 1.1")));
+        Codes->insert(OFMake_pair(RANO, DSRBasicCodedEntry("C114879", "NCIt", "RANO")));
+    }
+    /* should never be NULL */
+    return *Codes;
+}
+
+
+OFCondition CID6147_ResponseCriteria::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+{
+    return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
+}
index 792a2cb6e42d6122b116bbaeba26f73b82aad217..356aff53279d7e004972e54355ff07c319aeb922 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7021_MeasurementReportDocumentTitles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:55:09 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:52 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7181.cc b/dcmsr/libcmr/cid7181.cc
new file mode 100644 (file)
index 0000000..d42dc71
--- /dev/null
@@ -0,0 +1,217 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class CID7181_AbstractMultiDimensionalImageModelComponentUnits
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-08 15:04:54 by J. Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/cid7181.h"
+
+
+// general information on CID 7181 (Abstract Multi-dimensional Image Model Component Units)
+#define CONTEXT_GROUP_NUMBER  "7181"
+#define CONTEXT_GROUP_VERSION "20141110"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.918"
+#define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
+
+// initialize global/static variable
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CodeList *CID7181_AbstractMultiDimensionalImageModelComponentUnits::Codes = NULL;
+
+
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CID7181_AbstractMultiDimensionalImageModelComponentUnits(const DSRCodedEntryValue &selectedValue)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CID7181_AbstractMultiDimensionalImageModelComponentUnits(const EnumType selectedValue,
+                                                                                                                   const OFBool enhancedEncodingMode)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+OFCondition CID7181_AbstractMultiDimensionalImageModelComponentUnits::selectValue(const EnumType selectedValue,
+                                                                                  const OFBool enhancedEncodingMode)
+{
+    /* never check the coded entry */
+    return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
+}
+
+
+OFCondition CID7181_AbstractMultiDimensionalImageModelComponentUnits::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                                                     DSRCodedEntryValue *foundCodedEntry,
+                                                                                     const OFBool enhancedEncodingMode) const
+{
+    OFCondition result = SR_EC_CodedEntryNotInContextGroup;
+    /* first, search for standard codes */
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        /* if found, exit loop */
+        if (searchForCodedEntry == iter->second)
+        {
+            /* return coded entry (if requested) */
+            if (foundCodedEntry != NULL)
+            {
+                *foundCodedEntry = iter->second;
+                /* also set enhanced encoding mode (if enabled) */
+                if (!foundCodedEntry->isEmpty() && enhancedEncodingMode)
+                    setEnhancedEncodingMode(*foundCodedEntry);
+            }
+            result = SR_EC_CodedEntryInStandardContextGroup;
+            break;
+        }
+        ++iter;
+    }
+    /* if not, continue with extended codes */
+    if (result.bad())
+    {
+        result = DSRContextGroup::findCodedEntry(searchForCodedEntry, foundCodedEntry);
+        /* tbd: set "enhanced encoding mode" to mark a local/extended version? */
+    }
+    return result;
+}
+
+
+void CID7181_AbstractMultiDimensionalImageModelComponentUnits::printCodes(STD_NAMESPACE ostream &stream) const
+{
+    /* print standard codes */
+    stream << "Standard codes:" << OFendl;
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        stream << "  ";
+        /* print coded entry */
+        DSRCodedEntryValue(iter->second).print(stream);
+        stream << OFendl;
+        ++iter;
+    }
+    /* print extended codes */
+    DSRContextGroup::printCodes(stream);
+}
+
+
+// static functions
+
+void CID7181_AbstractMultiDimensionalImageModelComponentUnits::initialize()
+{
+    /* create and initialize code list */
+    getCodes();
+}
+
+
+void CID7181_AbstractMultiDimensionalImageModelComponentUnits::cleanup()
+{
+    /* delete code list, it will be recreated automatically when needed */
+    delete Codes;
+    Codes = NULL;
+}
+
+
+DSRCodedEntryValue CID7181_AbstractMultiDimensionalImageModelComponentUnits::getCodedEntry(const EnumType value,
+                                                                                           const OFBool enhancedEncodingMode)
+{
+    DSRCodedEntryValue codedEntry;
+    /* search for given enumerated value */
+    CodeList::iterator iter = getCodes().find(value);
+    /* if found, set the coded entry */
+    if (iter != getCodes().end())
+    {
+        codedEntry = iter->second;
+        /* also set enhanced encoding mode (if enabled) */
+        if (!codedEntry.isEmpty() && enhancedEncodingMode)
+            setEnhancedEncodingMode(codedEntry);
+    }
+    return codedEntry;
+}
+
+
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CodeList &CID7181_AbstractMultiDimensionalImageModelComponentUnits::getCodes()
+{
+    /* check whether code list has already been created and initialized */
+    if (Codes == NULL)
+    {
+        /* create a new code list (should never fail) */
+        Codes = new CodeList();
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(MmHg, DSRBasicCodedEntry("mm[Hg]", "UCUM", "mmHg")));
+        Codes->insert(OFMake_pair(KPa, DSRBasicCodedEntry("kPa", "UCUM", "kPa")));
+        Codes->insert(OFMake_pair(PRU, DSRBasicCodedEntry("[PRU]", "UCUM", "P.R.U.")));
+        Codes->insert(OFMake_pair(WoodU, DSRBasicCodedEntry("[wood'U]", "UCUM", "Wood U")));
+        Codes->insert(OFMake_pair(Dynscm5, DSRBasicCodedEntry("dyn.s.cm-5", "UCUM", "dyn.s.cm-5")));
+        Codes->insert(OFMake_pair(PRUPerM2, DSRBasicCodedEntry("[PRU]/m2", "UCUM", "P.R.U./m2")));
+        Codes->insert(OFMake_pair(WoodUPerM2, DSRBasicCodedEntry("[wood'U]/m2", "UCUM", "Wood U/m2")));
+        Codes->insert(OFMake_pair(Dynscm5PerM2, DSRBasicCodedEntry("dyn.s.cm-5/m2", "UCUM", "dyn.s.cm-5/m2")));
+        Codes->insert(OFMake_pair(Centimeter, DSRBasicCodedEntry("cm", "UCUM", "centimeter")));
+        Codes->insert(OFMake_pair(Millimeter, DSRBasicCodedEntry("mm", "UCUM", "millimeter")));
+        Codes->insert(OFMake_pair(Micrometer, DSRBasicCodedEntry("um", "UCUM", "micrometer")));
+        Codes->insert(OFMake_pair(SquareCentimeter, DSRBasicCodedEntry("cm2", "UCUM", "square centimeter")));
+        Codes->insert(OFMake_pair(SquareMillimeter, DSRBasicCodedEntry("mm2", "UCUM", "square millimeter")));
+        Codes->insert(OFMake_pair(SquareMicrometer, DSRBasicCodedEntry("um2", "UCUM", "square micrometer")));
+        Codes->insert(OFMake_pair(CubicDecimeter, DSRBasicCodedEntry("dm3", "UCUM", "cubic decimeter")));
+        Codes->insert(OFMake_pair(CubicCentimeter, DSRBasicCodedEntry("cm3", "UCUM", "cubic centimeter")));
+        Codes->insert(OFMake_pair(CubicMillimeter, DSRBasicCodedEntry("mm3", "UCUM", "cubic millimeter")));
+        Codes->insert(OFMake_pair(CubicMicrometer, DSRBasicCodedEntry("um3", "UCUM", "cubic micrometer")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueBodyWeight, DSRBasicCodedEntry("{SUVbw}g/ml", "UCUM", "Standardized Uptake Value body weight")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueLeanBodyMass, DSRBasicCodedEntry("{SUVlbm}g/ml", "UCUM", "Standardized Uptake Value lean body mass")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueBodySurfaceArea, DSRBasicCodedEntry("{SUVbsa}cm2/ml", "UCUM", "Standardized Uptake Value body surface area")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueIdealBodyWeight, DSRBasicCodedEntry("{SUVibw}g/ml", "UCUM", "Standardized Uptake Value ideal body weight")));
+        Codes->insert(OFMake_pair(Counts, DSRBasicCodedEntry("{counts}", "UCUM", "Counts")));
+        Codes->insert(OFMake_pair(CountsPerSecond, DSRBasicCodedEntry("{counts}/s", "UCUM", "Counts per second")));
+        Codes->insert(OFMake_pair(ProportionalToCounts, DSRBasicCodedEntry("{propcounts}", "UCUM", "Proportional to counts")));
+        Codes->insert(OFMake_pair(ProportionalToCountsPerSecond, DSRBasicCodedEntry("{propcounts}/s", "UCUM", "Proportional to counts per second")));
+        Codes->insert(OFMake_pair(Percent, DSRBasicCodedEntry("%", "UCUM", "Percent")));
+        Codes->insert(OFMake_pair(BecquerelsPerMilliliter, DSRBasicCodedEntry("Bq/ml", "UCUM", "Becquerels/milliliter")));
+        Codes->insert(OFMake_pair(MilligramsPerMinutePerMilliliter, DSRBasicCodedEntry("mg/min/ml", "UCUM", "Milligrams/minute/milliliter")));
+        Codes->insert(OFMake_pair(MicromolePerMinutePerMilliliter, DSRBasicCodedEntry("umol/min/ml", "UCUM", "Micromole/minute/milliliter")));
+        Codes->insert(OFMake_pair(MilliliterPerMinutePerGram, DSRBasicCodedEntry("ml/min/g", "UCUM", "Milliliter/minute/gram")));
+        Codes->insert(OFMake_pair(MilliliterPerGram, DSRBasicCodedEntry("ml/g", "UCUM", "Milliliter/gram")));
+        Codes->insert(OFMake_pair(PerCentimeter, DSRBasicCodedEntry("/cm", "UCUM", "/Centimeter")));
+        Codes->insert(OFMake_pair(MicromolePerMilliliter, DSRBasicCodedEntry("umol/ml", "UCUM", "Micromole/milliliter")));
+        Codes->insert(OFMake_pair(NoUnits, DSRBasicCodedEntry("1", "UCUM", "no units")));
+        Codes->insert(OFMake_pair(Ratio, DSRBasicCodedEntry("{ratio}", "UCUM", "ratio")));
+        Codes->insert(OFMake_pair(HounsfieldUnit, DSRBasicCodedEntry("[hnsf'U]", "UCUM", "Hounsfield Unit")));
+        Codes->insert(OFMake_pair(ArbitraryUnit, DSRBasicCodedEntry("[arb'U]", "UCUM", "arbitrary unit")));
+        Codes->insert(OFMake_pair(CentimeterPerSecond, DSRBasicCodedEntry("cm/s", "UCUM", "centimeter/second")));
+        Codes->insert(OFMake_pair(MillimeterPerSecond, DSRBasicCodedEntry("mm/s", "UCUM", "millimeter/second")));
+        Codes->insert(OFMake_pair(Decibel, DSRBasicCodedEntry("dB", "UCUM", "decibel")));
+        Codes->insert(OFMake_pair(DegreesCelsius, DSRBasicCodedEntry("Cel", "UCUM", "degrees Celsius")));
+        Codes->insert(OFMake_pair(MilliliterPerMinute, DSRBasicCodedEntry("ml/min", "UCUM", "milliliter per minute")));
+        Codes->insert(OFMake_pair(MilliliterPerSecond, DSRBasicCodedEntry("ml/s", "UCUM", "milliliter per second")));
+        Codes->insert(OFMake_pair(Millisecond, DSRBasicCodedEntry("ms", "UCUM", "millisecond")));
+        Codes->insert(OFMake_pair(Second, DSRBasicCodedEntry("s", "UCUM", "second")));
+        Codes->insert(OFMake_pair(Hertz, DSRBasicCodedEntry("Hz", "UCUM", "Hertz")));
+        Codes->insert(OFMake_pair(MilliTesla, DSRBasicCodedEntry("mT", "UCUM", "milliTesla")));
+        Codes->insert(OFMake_pair(NumberParticlesPer100GramOfTissue, DSRBasicCodedEntry("{Particles}/[100]g{Tissue}", "UCUM", "number particles per 100 gram of tissue")));
+        Codes->insert(OFMake_pair(SquareMillimeterPerSecond, DSRBasicCodedEntry("mm2/s", "UCUM", "square millimeter per second")));
+        Codes->insert(OFMake_pair(SecondPerSquareMillimeter, DSRBasicCodedEntry("s/mm2", "UCUM", "second per square millimeter")));
+        Codes->insert(OFMake_pair(MilliliterPer100GramPerMinute, DSRBasicCodedEntry("ml/[100]g/min", "UCUM", "milliliter per 100 gram per minute")));
+        Codes->insert(OFMake_pair(MilliliterPer100Milliliter, DSRBasicCodedEntry("ml/[100]ml", "UCUM", "milliliter per 100 milliliter")));
+        Codes->insert(OFMake_pair(MillimolesPerKgWetWeight, DSRBasicCodedEntry("mmol/kg{WetWeight}", "UCUM", "millimoles per kg wet weight")));
+        Codes->insert(OFMake_pair(PerMin, DSRBasicCodedEntry("/min", "UCUM", "/min")));
+        Codes->insert(OFMake_pair(PerS, DSRBasicCodedEntry("/s", "UCUM", "/s")));
+    }
+    /* should never be NULL */
+    return *Codes;
+}
+
+
+OFCondition CID7181_AbstractMultiDimensionalImageModelComponentUnits::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+{
+    return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
+}
index b58383195771b3845bcfe5a91cf7dbe512c845e4..c69546efc22b699b5e72f2ea61c6b10a47966477 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7445_DeviceParticipatingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:09 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:56 by J. Riesmeier
  *
  */
 
index 59031512c453e796de68964e1094485a47833277..69af1aba273185ef358881aa0489535ba0295950 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7452_OrganizationalRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:10 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:58 by J. Riesmeier
  *
  */
 
index 5f0977755546c42216f58355f91acd160bb0bda8..18c68103d7b614dfd30713e396905fda22e57f80 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7453_PerformingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:12 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:59 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7464.cc b/dcmsr/libcmr/cid7464.cc
new file mode 100644 (file)
index 0000000..e37280f
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class CID7464_GeneralRegionOfInterestMeasurementModifiers
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-08 15:05:01 by J. Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+
+
+// general information on CID 7464 (General Region of Interest Measurement Modifiers)
+#define CONTEXT_GROUP_NUMBER  "7464"
+#define CONTEXT_GROUP_VERSION "20121101"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.951"
+#define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
+
+// initialize global/static variable
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CodeList *CID7464_GeneralRegionOfInterestMeasurementModifiers::Codes = NULL;
+
+
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CID7464_GeneralRegionOfInterestMeasurementModifiers(const DSRCodedEntryValue &selectedValue)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CID7464_GeneralRegionOfInterestMeasurementModifiers(const EnumType selectedValue,
+                                                                                                         const OFBool enhancedEncodingMode)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+OFCondition CID7464_GeneralRegionOfInterestMeasurementModifiers::selectValue(const EnumType selectedValue,
+                                                                             const OFBool enhancedEncodingMode)
+{
+    /* never check the coded entry */
+    return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
+}
+
+
+OFCondition CID7464_GeneralRegionOfInterestMeasurementModifiers::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                                                DSRCodedEntryValue *foundCodedEntry,
+                                                                                const OFBool enhancedEncodingMode) const
+{
+    OFCondition result = SR_EC_CodedEntryNotInContextGroup;
+    /* first, search for standard codes */
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        /* if found, exit loop */
+        if (searchForCodedEntry == iter->second)
+        {
+            /* return coded entry (if requested) */
+            if (foundCodedEntry != NULL)
+            {
+                *foundCodedEntry = iter->second;
+                /* also set enhanced encoding mode (if enabled) */
+                if (!foundCodedEntry->isEmpty() && enhancedEncodingMode)
+                    setEnhancedEncodingMode(*foundCodedEntry);
+            }
+            result = SR_EC_CodedEntryInStandardContextGroup;
+            break;
+        }
+        ++iter;
+    }
+    /* if not, continue with extended codes */
+    if (result.bad())
+    {
+        result = DSRContextGroup::findCodedEntry(searchForCodedEntry, foundCodedEntry);
+        /* tbd: set "enhanced encoding mode" to mark a local/extended version? */
+    }
+    return result;
+}
+
+
+void CID7464_GeneralRegionOfInterestMeasurementModifiers::printCodes(STD_NAMESPACE ostream &stream) const
+{
+    /* print standard codes */
+    stream << "Standard codes:" << OFendl;
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        stream << "  ";
+        /* print coded entry */
+        DSRCodedEntryValue(iter->second).print(stream);
+        stream << OFendl;
+        ++iter;
+    }
+    /* print extended codes */
+    DSRContextGroup::printCodes(stream);
+}
+
+
+// static functions
+
+void CID7464_GeneralRegionOfInterestMeasurementModifiers::initialize()
+{
+    /* create and initialize code list */
+    getCodes();
+}
+
+
+void CID7464_GeneralRegionOfInterestMeasurementModifiers::cleanup()
+{
+    /* delete code list, it will be recreated automatically when needed */
+    delete Codes;
+    Codes = NULL;
+}
+
+
+DSRCodedEntryValue CID7464_GeneralRegionOfInterestMeasurementModifiers::getCodedEntry(const EnumType value,
+                                                                                      const OFBool enhancedEncodingMode)
+{
+    DSRCodedEntryValue codedEntry;
+    /* search for given enumerated value */
+    CodeList::iterator iter = getCodes().find(value);
+    /* if found, set the coded entry */
+    if (iter != getCodes().end())
+    {
+        codedEntry = iter->second;
+        /* also set enhanced encoding mode (if enabled) */
+        if (!codedEntry.isEmpty() && enhancedEncodingMode)
+            setEnhancedEncodingMode(codedEntry);
+    }
+    return codedEntry;
+}
+
+
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CodeList &CID7464_GeneralRegionOfInterestMeasurementModifiers::getCodes()
+{
+    /* check whether code list has already been created and initialized */
+    if (Codes == NULL)
+    {
+        /* create a new code list (should never fail) */
+        Codes = new CodeList();
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(Maximum, DSRBasicCodedEntry("G-A437", "SRT", "Maximum")));
+        Codes->insert(OFMake_pair(Minimum, DSRBasicCodedEntry("R-404FB", "SRT", "Minimum")));
+        Codes->insert(OFMake_pair(Mean, DSRBasicCodedEntry("R-00317", "SRT", "Mean")));
+        Codes->insert(OFMake_pair(StandardDeviation, DSRBasicCodedEntry("R-10047", "SRT", "Standard Deviation")));
+        Codes->insert(OFMake_pair(Total, DSRBasicCodedEntry("R-40507", "SRT", "Total")));
+        Codes->insert(OFMake_pair(Median, DSRBasicCodedEntry("R-00319", "SRT", "Median")));
+        Codes->insert(OFMake_pair(Mode, DSRBasicCodedEntry("R-0032E", "SRT", "Mode")));
+        Codes->insert(OFMake_pair(PeakValueWithinROI, DSRBasicCodedEntry("126031", "DCM", "Peak Value Within ROI")));
+        Codes->insert(OFMake_pair(CoefficientOfVariance, DSRBasicCodedEntry("C0681921", "UMLS", "Coefficient of Variance")));
+        Codes->insert(OFMake_pair(Skewness, DSRBasicCodedEntry("126051", "DCM", "Skewness")));
+        Codes->insert(OFMake_pair(Kurtosis, DSRBasicCodedEntry("126052", "DCM", "Kurtosis")));
+        Codes->insert(OFMake_pair(Variance, DSRBasicCodedEntry("C1711260", "UMLS", "Variance")));
+        Codes->insert(OFMake_pair(RootMeanSquare, DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square")));
+    }
+    /* should never be NULL */
+    return *Codes;
+}
+
+
+OFCondition CID7464_GeneralRegionOfInterestMeasurementModifiers::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+{
+    return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
+}
diff --git a/dcmsr/libcmr/cid7469.cc b/dcmsr/libcmr/cid7469.cc
new file mode 100644 (file)
index 0000000..877588b
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class CID7469_GenericIntensityAndSizeMeasurements
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-08 15:05:03 by J. Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/cid7469.h"
+
+
+// general information on CID 7469 (Generic Intensity and Size Measurements)
+#define CONTEXT_GROUP_NUMBER  "7469"
+#define CONTEXT_GROUP_VERSION "20141110"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.1003"
+#define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
+
+// initialize global/static variable
+CID7469_GenericIntensityAndSizeMeasurements::CodeList *CID7469_GenericIntensityAndSizeMeasurements::Codes = NULL;
+
+
+CID7469_GenericIntensityAndSizeMeasurements::CID7469_GenericIntensityAndSizeMeasurements(const DSRCodedEntryValue &selectedValue)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+CID7469_GenericIntensityAndSizeMeasurements::CID7469_GenericIntensityAndSizeMeasurements(const EnumType selectedValue,
+                                                                                         const OFBool enhancedEncodingMode)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+OFCondition CID7469_GenericIntensityAndSizeMeasurements::selectValue(const EnumType selectedValue,
+                                                                     const OFBool enhancedEncodingMode)
+{
+    /* never check the coded entry */
+    return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
+}
+
+
+OFCondition CID7469_GenericIntensityAndSizeMeasurements::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                                        DSRCodedEntryValue *foundCodedEntry,
+                                                                        const OFBool enhancedEncodingMode) const
+{
+    OFCondition result = SR_EC_CodedEntryNotInContextGroup;
+    /* first, search for standard codes */
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        /* if found, exit loop */
+        if (searchForCodedEntry == iter->second)
+        {
+            /* return coded entry (if requested) */
+            if (foundCodedEntry != NULL)
+            {
+                *foundCodedEntry = iter->second;
+                /* also set enhanced encoding mode (if enabled) */
+                if (!foundCodedEntry->isEmpty() && enhancedEncodingMode)
+                    setEnhancedEncodingMode(*foundCodedEntry);
+            }
+            result = SR_EC_CodedEntryInStandardContextGroup;
+            break;
+        }
+        ++iter;
+    }
+    /* if not, continue with extended codes */
+    if (result.bad())
+    {
+        result = DSRContextGroup::findCodedEntry(searchForCodedEntry, foundCodedEntry);
+        /* tbd: set "enhanced encoding mode" to mark a local/extended version? */
+    }
+    return result;
+}
+
+
+void CID7469_GenericIntensityAndSizeMeasurements::printCodes(STD_NAMESPACE ostream &stream) const
+{
+    /* print standard codes */
+    stream << "Standard codes:" << OFendl;
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        stream << "  ";
+        /* print coded entry */
+        DSRCodedEntryValue(iter->second).print(stream);
+        stream << OFendl;
+        ++iter;
+    }
+    /* print extended codes */
+    DSRContextGroup::printCodes(stream);
+}
+
+
+// static functions
+
+void CID7469_GenericIntensityAndSizeMeasurements::initialize()
+{
+    /* create and initialize code list */
+    getCodes();
+}
+
+
+void CID7469_GenericIntensityAndSizeMeasurements::cleanup()
+{
+    /* delete code list, it will be recreated automatically when needed */
+    delete Codes;
+    Codes = NULL;
+}
+
+
+DSRCodedEntryValue CID7469_GenericIntensityAndSizeMeasurements::getCodedEntry(const EnumType value,
+                                                                              const OFBool enhancedEncodingMode)
+{
+    DSRCodedEntryValue codedEntry;
+    /* search for given enumerated value */
+    CodeList::iterator iter = getCodes().find(value);
+    /* if found, set the coded entry */
+    if (iter != getCodes().end())
+    {
+        codedEntry = iter->second;
+        /* also set enhanced encoding mode (if enabled) */
+        if (!codedEntry.isEmpty() && enhancedEncodingMode)
+            setEnhancedEncodingMode(codedEntry);
+    }
+    return codedEntry;
+}
+
+
+CID7469_GenericIntensityAndSizeMeasurements::CodeList &CID7469_GenericIntensityAndSizeMeasurements::getCodes()
+{
+    /* check whether code list has already been created and initialized */
+    if (Codes == NULL)
+    {
+        /* create a new code list (should never fail) */
+        Codes = new CodeList();
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(NAcetylaspartate, DSRBasicCodedEntry("F-6175A", "SRT", "N-acetylaspartate")));
+        Codes->insert(OFMake_pair(Citrate, DSRBasicCodedEntry("F-61080", "SRT", "Citrate")));
+        Codes->insert(OFMake_pair(Choline, DSRBasicCodedEntry("F-61620", "SRT", "Choline")));
+        Codes->insert(OFMake_pair(Creatine, DSRBasicCodedEntry("F-61380", "SRT", "Creatine")));
+        Codes->insert(OFMake_pair(CreatineAndCholine, DSRBasicCodedEntry("113094", "DCM", "Creatine and Choline")));
+        Codes->insert(OFMake_pair(Lactate, DSRBasicCodedEntry("F-61760", "SRT", "Lactate")));
+        Codes->insert(OFMake_pair(Lipid, DSRBasicCodedEntry("F-63600", "SRT", "Lipid")));
+        Codes->insert(OFMake_pair(LipidAndLactate, DSRBasicCodedEntry("113095", "DCM", "Lipid and Lactate")));
+        Codes->insert(OFMake_pair(GlutamateAndGlutamine, DSRBasicCodedEntry("113080", "DCM", "Glutamate and glutamine")));
+        Codes->insert(OFMake_pair(Glutamine, DSRBasicCodedEntry("F-64210", "SRT", "Glutamine")));
+        Codes->insert(OFMake_pair(Tuarine, DSRBasicCodedEntry("F-64460", "SRT", "Tuarine")));
+        Codes->insert(OFMake_pair(Inositol, DSRBasicCodedEntry("F-61A90", "SRT", "Inositol")));
+        Codes->insert(OFMake_pair(CholinePerCreatineRatio, DSRBasicCodedEntry("113081", "DCM", "Choline/Creatine Ratio")));
+        Codes->insert(OFMake_pair(NAcetylaspartatePerCreatineRatio, DSRBasicCodedEntry("113082", "DCM", "N-acetylaspartate/Creatine Ratio")));
+        Codes->insert(OFMake_pair(NAcetylaspartatePerCholineRatio, DSRBasicCodedEntry("113083", "DCM", "N-acetylaspartate/Choline Ratio")));
+        Codes->insert(OFMake_pair(CreatinePlusCholinePerCitrateRatio, DSRBasicCodedEntry("113096", "DCM", "Creatine+Choline/Citrate Ratio")));
+        Codes->insert(OFMake_pair(T1, DSRBasicCodedEntry("113063", "DCM", "T1")));
+        Codes->insert(OFMake_pair(T2, DSRBasicCodedEntry("113065", "DCM", "T2")));
+        Codes->insert(OFMake_pair(T2Star, DSRBasicCodedEntry("113064", "DCM", "T2*")));
+        Codes->insert(OFMake_pair(ProtonDensity, DSRBasicCodedEntry("113058", "DCM", "Proton Density")));
+        Codes->insert(OFMake_pair(SpinTaggingPerfusionMRSignalIntensity, DSRBasicCodedEntry("110800", "DCM", "Spin Tagging Perfusion MR Signal Intensity")));
+        Codes->insert(OFMake_pair(VelocityEncoded, DSRBasicCodedEntry("113070", "DCM", "Velocity encoded")));
+        Codes->insert(OFMake_pair(TemperatureEncoded, DSRBasicCodedEntry("113067", "DCM", "Temperature encoded")));
+        Codes->insert(OFMake_pair(ContrastAgentAngioMRSignalIntensity, DSRBasicCodedEntry("110801", "DCM", "Contrast Agent Angio MR Signal Intensity")));
+        Codes->insert(OFMake_pair(TimeOfFlightAngioMRSignalIntensity, DSRBasicCodedEntry("110802", "DCM", "Time Of Flight Angio MR Signal Intensity")));
+        Codes->insert(OFMake_pair(ProtonDensityWeightedMRSignalIntensity, DSRBasicCodedEntry("110803", "DCM", "Proton Density Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T1WeightedMRSignalIntensity, DSRBasicCodedEntry("110804", "DCM", "T1 Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2WeightedMRSignalIntensity, DSRBasicCodedEntry("110805", "DCM", "T2 Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2StarWeightedMRSignalIntensity, DSRBasicCodedEntry("110806", "DCM", "T2* Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(DiffusionWeighted, DSRBasicCodedEntry("113043", "DCM", "Diffusion weighted")));
+        Codes->insert(OFMake_pair(FieldMapMRSignalIntensity, DSRBasicCodedEntry("110807", "DCM", "Field Map MR Signal Intensity")));
+        Codes->insert(OFMake_pair(FractionalAnisotropy, DSRBasicCodedEntry("110808", "DCM", "Fractional Anisotropy")));
+        Codes->insert(OFMake_pair(RelativeAnisotropy, DSRBasicCodedEntry("110809", "DCM", "Relative Anisotropy")));
+        Codes->insert(OFMake_pair(ApparentDiffusionCoefficient, DSRBasicCodedEntry("113041", "DCM", "Apparent Diffusion Coefficient")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDxxComponent, DSRBasicCodedEntry("110810", "DCM", "Volumetric Diffusion Dxx Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDxyComponent, DSRBasicCodedEntry("110811", "DCM", "Volumetric Diffusion Dxy Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDxzComponent, DSRBasicCodedEntry("110812", "DCM", "Volumetric Diffusion Dxz Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDyyComponent, DSRBasicCodedEntry("110813", "DCM", "Volumetric Diffusion Dyy Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDyzComponent, DSRBasicCodedEntry("110814", "DCM", "Volumetric Diffusion Dyz Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDzzComponent, DSRBasicCodedEntry("110815", "DCM", "Volumetric Diffusion Dzz Component")));
+        Codes->insert(OFMake_pair(T1WeightedDynamicContrastEnhancedMRSignalIntensity, DSRBasicCodedEntry("110816", "DCM", "T1 Weighted Dynamic Contrast Enhanced MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2WeightedDynamicContrastEnhancedMRSignalIntensity, DSRBasicCodedEntry("110817", "DCM", "T2 Weighted Dynamic Contrast Enhanced MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2StarWeightedDynamicContrastEnhancedMRSignalIntensity, DSRBasicCodedEntry("110818", "DCM", "T2* Weighted Dynamic Contrast Enhanced MR Signal Intensity")));
+        Codes->insert(OFMake_pair(BloodOxygenationLevel, DSRBasicCodedEntry("110819", "DCM", "Blood Oxygenation Level")));
+        Codes->insert(OFMake_pair(NuclearMedicineProjectionActivity, DSRBasicCodedEntry("110820", "DCM", "Nuclear Medicine Projection Activity")));
+        Codes->insert(OFMake_pair(NuclearMedicineTomographicActivity, DSRBasicCodedEntry("110821", "DCM", "Nuclear Medicine Tomographic Activity")));
+        Codes->insert(OFMake_pair(SpatialDisplacementXComponent, DSRBasicCodedEntry("110822", "DCM", "Spatial Displacement X Component")));
+        Codes->insert(OFMake_pair(SpatialDisplacementYComponent, DSRBasicCodedEntry("110823", "DCM", "Spatial Displacement Y Component")));
+        Codes->insert(OFMake_pair(SpatialDisplacementZComponent, DSRBasicCodedEntry("110824", "DCM", "Spatial Displacement Z Component")));
+        Codes->insert(OFMake_pair(HemodynamicResistance, DSRBasicCodedEntry("110825", "DCM", "Hemodynamic Resistance")));
+        Codes->insert(OFMake_pair(IndexedHemodynamicResistance, DSRBasicCodedEntry("110826", "DCM", "Indexed Hemodynamic Resistance")));
+        Codes->insert(OFMake_pair(AttenuationCoefficient, DSRBasicCodedEntry("112031", "DCM", "Attenuation Coefficient")));
+        Codes->insert(OFMake_pair(TissueVelocity, DSRBasicCodedEntry("110827", "DCM", "Tissue Velocity")));
+        Codes->insert(OFMake_pair(FlowVelocity, DSRBasicCodedEntry("110828", "DCM", "Flow Velocity")));
+        Codes->insert(OFMake_pair(PowerDoppler, DSRBasicCodedEntry("P0-02241", "SRT", "Power Doppler")));
+        Codes->insert(OFMake_pair(FlowVariance, DSRBasicCodedEntry("110829", "DCM", "Flow Variance")));
+        Codes->insert(OFMake_pair(Elasticity, DSRBasicCodedEntry("110830", "DCM", "Elasticity")));
+        Codes->insert(OFMake_pair(Perfusion, DSRBasicCodedEntry("110831", "DCM", "Perfusion")));
+        Codes->insert(OFMake_pair(SpeedOfSound, DSRBasicCodedEntry("110832", "DCM", "Speed of sound")));
+        Codes->insert(OFMake_pair(UltrasoundAttenuation, DSRBasicCodedEntry("110833", "DCM", "Ultrasound Attenuation")));
+        Codes->insert(OFMake_pair(StudentsTTest, DSRBasicCodedEntry("113068", "DCM", "Student's T-test")));
+        Codes->insert(OFMake_pair(ZScore, DSRBasicCodedEntry("113071", "DCM", "Z-score")));
+        Codes->insert(OFMake_pair(RCoefficient, DSRBasicCodedEntry("113057", "DCM", "R-Coefficient")));
+        Codes->insert(OFMake_pair(R2Coefficient, DSRBasicCodedEntry("126220", "DCM", "R2-Coefficient")));
+        Codes->insert(OFMake_pair(RGBRComponent, DSRBasicCodedEntry("110834", "DCM", "RGB R Component")));
+        Codes->insert(OFMake_pair(RGBGComponent, DSRBasicCodedEntry("110835", "DCM", "RGB G Component")));
+        Codes->insert(OFMake_pair(RGBBComponent, DSRBasicCodedEntry("110836", "DCM", "RGB B Component")));
+        Codes->insert(OFMake_pair(YBR_FULLYComponent, DSRBasicCodedEntry("110837", "DCM", "YBR FULL Y Component")));
+        Codes->insert(OFMake_pair(YBR_FULL_CBComponent, DSRBasicCodedEntry("110838", "DCM", "YBR FULL CB Component")));
+        Codes->insert(OFMake_pair(YBR_FULL_CRComponent, DSRBasicCodedEntry("110839", "DCM", "YBR FULL CR Component")));
+        Codes->insert(OFMake_pair(YBR_PARTIALYComponent, DSRBasicCodedEntry("110840", "DCM", "YBR PARTIAL Y Component")));
+        Codes->insert(OFMake_pair(YBR_PARTIAL_CBComponent, DSRBasicCodedEntry("110841", "DCM", "YBR PARTIAL CB Component")));
+        Codes->insert(OFMake_pair(YBR_PARTIAL_CRComponent, DSRBasicCodedEntry("110842", "DCM", "YBR PARTIAL CR Component")));
+        Codes->insert(OFMake_pair(YBR_ICTYComponent, DSRBasicCodedEntry("110843", "DCM", "YBR ICT Y Component")));
+        Codes->insert(OFMake_pair(YBR_ICT_CBComponent, DSRBasicCodedEntry("110844", "DCM", "YBR ICT CB Component")));
+        Codes->insert(OFMake_pair(YBR_ICT_CRComponent, DSRBasicCodedEntry("110845", "DCM", "YBR ICT CR Component")));
+        Codes->insert(OFMake_pair(YBR_RCTYComponent, DSRBasicCodedEntry("110846", "DCM", "YBR RCT Y Component")));
+        Codes->insert(OFMake_pair(YBR_RCT_CBComponent, DSRBasicCodedEntry("110847", "DCM", "YBR RCT CB Component")));
+        Codes->insert(OFMake_pair(YBR_RCT_CRComponent, DSRBasicCodedEntry("110848", "DCM", "YBR RCT CR Component")));
+        Codes->insert(OFMake_pair(Echogenicity, DSRBasicCodedEntry("110849", "DCM", "Echogenicity")));
+        Codes->insert(OFMake_pair(XRayAttenuation, DSRBasicCodedEntry("110850", "DCM", "X-Ray Attenuation")));
+        Codes->insert(OFMake_pair(MRSignalIntensity, DSRBasicCodedEntry("110852", "DCM", "MR signal intensity")));
+        Codes->insert(OFMake_pair(BinarySegmentation, DSRBasicCodedEntry("110853", "DCM", "Binary Segmentation")));
+        Codes->insert(OFMake_pair(FractionalProbabilisticSegmentation, DSRBasicCodedEntry("110854", "DCM", "Fractional Probabilistic Segmentation")));
+        Codes->insert(OFMake_pair(FractionalOccupancySegmentation, DSRBasicCodedEntry("110855", "DCM", "Fractional Occupancy Segmentation")));
+        Codes->insert(OFMake_pair(R1, DSRBasicCodedEntry("126393", "DCM", "R1")));
+        Codes->insert(OFMake_pair(R2, DSRBasicCodedEntry("126394", "DCM", "R2")));
+        Codes->insert(OFMake_pair(Ktrans, DSRBasicCodedEntry("126312", "DCM", "Ktrans")));
+        Codes->insert(OFMake_pair(Kep, DSRBasicCodedEntry("126313", "DCM", "kep")));
+        Codes->insert(OFMake_pair(Ve, DSRBasicCodedEntry("126314", "DCM", "ve")));
+        Codes->insert(OFMake_pair(Tau_m, DSRBasicCodedEntry("126330", "DCM", "tau_m")));
+        Codes->insert(OFMake_pair(Vp, DSRBasicCodedEntry("126331", "DCM", "vp")));
+        Codes->insert(OFMake_pair(RegionalCerebralBloodFlow, DSRBasicCodedEntry("113055", "DCM", "Regional Cerebral Blood Flow")));
+        Codes->insert(OFMake_pair(RegionalBloodFlow, DSRBasicCodedEntry("126390", "DCM", "Regional Blood Flow")));
+        Codes->insert(OFMake_pair(RegionalCerebralBloodVolume, DSRBasicCodedEntry("113056", "DCM", "Regional Cerebral Blood Volume")));
+        Codes->insert(OFMake_pair(RegionalBloodVolume, DSRBasicCodedEntry("126391", "DCM", "Regional Blood Volume")));
+        Codes->insert(OFMake_pair(MeanTransitTime, DSRBasicCodedEntry("113052", "DCM", "Mean Transit Time")));
+        Codes->insert(OFMake_pair(TimeToPeak, DSRBasicCodedEntry("113069", "DCM", "Time To Peak")));
+        Codes->insert(OFMake_pair(OxygenExtractionFraction, DSRBasicCodedEntry("126392", "DCM", "Oxygen Extraction Fraction")));
+        Codes->insert(OFMake_pair(IAUC, DSRBasicCodedEntry("126320", "DCM", "IAUC")));
+        Codes->insert(OFMake_pair(IAUC60, DSRBasicCodedEntry("126321", "DCM", "IAUC60")));
+        Codes->insert(OFMake_pair(IAUC90, DSRBasicCodedEntry("126322", "DCM", "IAUC90")));
+        Codes->insert(OFMake_pair(TimeOfPeakConcentration, DSRBasicCodedEntry("126370", "DCM", "Time of Peak Concentration")));
+        Codes->insert(OFMake_pair(TimeOfLeadingHalfPeakConcentration, DSRBasicCodedEntry("126372", "DCM", "Time of Leading Half-Peak Concentration")));
+        Codes->insert(OFMake_pair(BolusArrivalTime, DSRBasicCodedEntry("126371", "DCM", "Bolus Arrival Time")));
+        Codes->insert(OFMake_pair(TemporalDerivativeThreshold, DSRBasicCodedEntry("126374", "DCM", "Temporal Derivative Threshold")));
+        Codes->insert(OFMake_pair(MaximumSlope, DSRBasicCodedEntry("126375", "DCM", "Maximum Slope")));
+        Codes->insert(OFMake_pair(MaximumDifference, DSRBasicCodedEntry("126376", "DCM", "Maximum Difference")));
+        Codes->insert(OFMake_pair(TracerConcentration, DSRBasicCodedEntry("126377", "DCM", "Tracer Concentration")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValue, DSRBasicCodedEntry("126400", "DCM", "Standardized Uptake Value")));
+        Codes->insert(OFMake_pair(SUVbw, DSRBasicCodedEntry("126401", "DCM", "SUVbw")));
+        Codes->insert(OFMake_pair(SUVlbm, DSRBasicCodedEntry("126402", "DCM", "SUVlbm")));
+        Codes->insert(OFMake_pair(SUVbsa, DSRBasicCodedEntry("126403", "DCM", "SUVbsa")));
+        Codes->insert(OFMake_pair(SUVibw, DSRBasicCodedEntry("126404", "DCM", "SUVibw")));
+        Codes->insert(OFMake_pair(Length, DSRBasicCodedEntry("G-A22A", "SRT", "Length")));
+        Codes->insert(OFMake_pair(PathLength, DSRBasicCodedEntry("121211", "DCM", "Path length")));
+        Codes->insert(OFMake_pair(Distance, DSRBasicCodedEntry("121206", "DCM", "Distance")));
+        Codes->insert(OFMake_pair(Width, DSRBasicCodedEntry("G-A220", "SRT", "Width")));
+        Codes->insert(OFMake_pair(Depth, DSRBasicCodedEntry("G-D785", "SRT", "Depth")));
+        Codes->insert(OFMake_pair(Diameter, DSRBasicCodedEntry("M-02550", "SRT", "Diameter")));
+        Codes->insert(OFMake_pair(LongAxis, DSRBasicCodedEntry("G-A185", "SRT", "Long Axis")));
+        Codes->insert(OFMake_pair(ShortAxis, DSRBasicCodedEntry("G-A186", "SRT", "Short Axis")));
+        Codes->insert(OFMake_pair(MajorAxis, DSRBasicCodedEntry("G-A193", "SRT", "Major Axis")));
+        Codes->insert(OFMake_pair(MinorAxis, DSRBasicCodedEntry("G-A194", "SRT", "Minor Axis")));
+        Codes->insert(OFMake_pair(PerpendicularAxis, DSRBasicCodedEntry("G-A195", "SRT", "Perpendicular Axis")));
+        Codes->insert(OFMake_pair(Radius, DSRBasicCodedEntry("G-A196", "SRT", "Radius")));
+        Codes->insert(OFMake_pair(Perimeter, DSRBasicCodedEntry("G-A197", "SRT", "Perimeter")));
+        Codes->insert(OFMake_pair(Circumference, DSRBasicCodedEntry("M-02560", "SRT", "Circumference")));
+        Codes->insert(OFMake_pair(DiameterOfCircumscribedCircle, DSRBasicCodedEntry("G-A198", "SRT", "Diameter of circumscribed circle")));
+        Codes->insert(OFMake_pair(Height, DSRBasicCodedEntry("121207", "DCM", "Height")));
+        Codes->insert(OFMake_pair(Area, DSRBasicCodedEntry("G-A166", "SRT", "Area")));
+        Codes->insert(OFMake_pair(AreaOfDefinedRegion, DSRBasicCodedEntry("G-A16A", "SRT", "Area of defined region")));
+        Codes->insert(OFMake_pair(Volume, DSRBasicCodedEntry("G-D705", "SRT", "Volume")));
+        Codes->insert(OFMake_pair(VolumeEstimatedFromSingle2DRegion, DSRBasicCodedEntry("121216", "DCM", "Volume estimated from single 2D region")));
+        Codes->insert(OFMake_pair(VolumeEstimatedFromTwoNonCoplanar2DRegions, DSRBasicCodedEntry("121218", "DCM", "Volume estimated from two non-coplanar 2D regions")));
+        Codes->insert(OFMake_pair(VolumeEstimatedFromThreeOrMoreNonCoplanar2DRegions, DSRBasicCodedEntry("121217", "DCM", "Volume estimated from three or more non-coplanar 2D regions")));
+        Codes->insert(OFMake_pair(VolumeOfSphere, DSRBasicCodedEntry("121222", "DCM", "Volume of sphere")));
+        Codes->insert(OFMake_pair(VolumeOfEllipsoid, DSRBasicCodedEntry("121221", "DCM", "Volume of ellipsoid")));
+        Codes->insert(OFMake_pair(VolumeOfCircumscribedSphere, DSRBasicCodedEntry("121220", "DCM", "Volume of circumscribed sphere")));
+        Codes->insert(OFMake_pair(VolumeOfBoundingThreeDimensionalRegion, DSRBasicCodedEntry("121219", "DCM", "Volume of bounding three dimensional region")));
+    }
+    /* should never be NULL */
+    return *Codes;
+}
+
+
+OFCondition CID7469_GenericIntensityAndSizeMeasurements::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+{
+    return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
+}
index cb64598a3da72b78bbb3b94b6dcaa91e49873893..0edea681fceacfec8926dda6f440e261c31a2488 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CMR_ContentMappingResource
 #include "dcmtk/dcmsr/cmr/cid4031.h"
 #include "dcmtk/dcmsr/cmr/cid5000.h"
 #include "dcmtk/dcmsr/cmr/cid5001.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
 #include "dcmtk/dcmsr/cmr/cid7021.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
 #include "dcmtk/dcmsr/cmr/cid7445.h"
 #include "dcmtk/dcmsr/cmr/cid7452.h"
 #include "dcmtk/dcmsr/cmr/cid7453.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+#include "dcmtk/dcmsr/cmr/cid7469.h"
 #include "dcmtk/dcmsr/cmr/cid10013.h"
 #include "dcmtk/dcmsr/cmr/cid10033.h"
 
@@ -49,10 +53,14 @@ void CMR_ContentMappingResource::initializeAllContextGroups()
     CID4031_CommonAnatomicRegions::initialize();
     CID5000_Languages::initialize();
     CID5001_Countries::initialize();
+    CID6147_ResponseCriteria::initialize();
     CID7021_MeasurementReportDocumentTitles::initialize();
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits::initialize();
     CID7445_DeviceParticipatingRoles::initialize();
     CID7452_OrganizationalRoles::initialize();
     CID7453_PerformingRoles::initialize();
+    CID7464_GeneralRegionOfInterestMeasurementModifiers::initialize();
+    CID7469_GenericIntensityAndSizeMeasurements::initialize();
     CID10013_CTAcquisitionType::initialize();
     CID10033_CTReconstructionAlgorithm::initialize();
 }
@@ -71,10 +79,14 @@ void CMR_ContentMappingResource::cleanupAllContextGroups()
     CID4031_CommonAnatomicRegions::cleanup();
     CID5000_Languages::cleanup();
     CID5001_Countries::cleanup();
+    CID6147_ResponseCriteria::cleanup();
     CID7021_MeasurementReportDocumentTitles::cleanup();
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits::cleanup();
     CID7445_DeviceParticipatingRoles::cleanup();
     CID7452_OrganizationalRoles::cleanup();
     CID7453_PerformingRoles::cleanup();
+    CID7464_GeneralRegionOfInterestMeasurementModifiers::cleanup();
+    CID7469_GenericIntensityAndSizeMeasurements::cleanup();
     CID10013_CTAcquisitionType::cleanup();
     CID10033_CTReconstructionAlgorithm::cleanup();
 }
index a017f98464fc87bb44d278c15c3a45e2c863535f..7ce6f27e5b519d312b065d67899f802402136da9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CMR_SRNumericMeasurementValue
@@ -29,9 +29,16 @@ CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const OFString &num
 }
 
 
+CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const CID42_NumericValueQualifier &valueQualifier,
+                                                             const OFBool check)
+  : DSRNumericMeasurementValue(valueQualifier, check)
+{
+}
+
+
 CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const OFString &numericValue,
                                                              const DSRCodedEntryValue &measurementUnit,
-                                                             const DSRCodedEntryValue &valueQualifier,
+                                                             const CID42_NumericValueQualifier &valueQualifier,
                                                              const OFBool check)
   : DSRNumericMeasurementValue(numericValue, measurementUnit, valueQualifier, check)
 {
@@ -44,6 +51,12 @@ CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const CMR_SRNumeric
 }
 
 
+CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement)
+  : DSRNumericMeasurementValue(numericMeasurement)
+{
+}
+
+
 CMR_SRNumericMeasurementValue::~CMR_SRNumericMeasurementValue()
 {
 }
@@ -57,24 +70,42 @@ CMR_SRNumericMeasurementValue &CMR_SRNumericMeasurementValue::operator=(const CM
 }
 
 
-OFCondition CMR_SRNumericMeasurementValue::setNumericValueQualifier(CID42_NumericValueQualifier::EnumType valueQualifier,
-                                                                    const OFBool enhancedEncodingMode)
+OFCondition CMR_SRNumericMeasurementValue::setValue(const CID42_NumericValueQualifier &valueQualifier,
+                                                    const OFBool check)
+{
+    /* map type to coded entry and call the method doing the real work */
+    return DSRNumericMeasurementValue::setValue(valueQualifier, check);
+}
+
+
+OFCondition CMR_SRNumericMeasurementValue::setValue(const OFString &numericValue,
+                                                    const DSRCodedEntryValue &measurementUnit,
+                                                    const CID42_NumericValueQualifier &valueQualifier,
+                                                    const OFBool check)
+{
+    /* map type to coded entry and call the method doing the real work */
+    return DSRNumericMeasurementValue::setValue(numericValue, measurementUnit, valueQualifier, check);
+}
+
+
+OFCondition CMR_SRNumericMeasurementValue::setNumericValueQualifier(const CID42_NumericValueQualifier &valueQualifier,
+                                                                    const OFBool check)
 {
     /* map type to coded entry and call the method doing the real work */
-    return setNumericValueQualifier(CID42_NumericValueQualifier::getCodedEntry(valueQualifier, enhancedEncodingMode), OFFalse /*check*/);
+    return DSRNumericMeasurementValue::setNumericValueQualifier(valueQualifier, check);
 }
 
 
 OFCondition CMR_SRNumericMeasurementValue::checkNumericValueQualifier(const DSRCodedEntryValue &valueQualifier) const
 {
     /* first, perform some basic checks (done by the base class) */
-    OFCondition status = DSRNumericMeasurementValue::checkNumericValueQualifier(valueQualifier);
-    if (status.good() && !valueQualifier.isEmpty())
+    OFCondition result = DSRNumericMeasurementValue::checkNumericValueQualifier(valueQualifier);
+    if (result.good() && !valueQualifier.isEmpty())
     {
         /* then, also check for conformance with CID 42 */
         static const CID42_NumericValueQualifier contextGroup;
         if (contextGroup.findCodedEntry(valueQualifier).bad())
-            status = SR_EC_CodedEntryNotInContextGroup;
+            result = SR_EC_CodedEntryNotInContextGroup;
     }
-    return status;
+    return result;
 }
index 54fadd6169ad62ec10ed917e686f7bc5572d5421..262c499513e70cfa91f7abfac95db9496fc30fa0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class TID1001_ObservationContext
@@ -19,7 +19,8 @@
 // helper macros for checking the return value of API calls
 #define CHECK_RESULT(call) if (result.good()) result = call
 #define STORE_RESULT(call) result = call
-#define DELETE_ERROR(pointer) if (result.bad()) delete pointer
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
 
 // index positions in node list (makes source code more readable)
 #define LAST_PERSON_OBSERVER 0
@@ -53,7 +54,7 @@ OFCondition TID1001_ObservationContext::addPersonObserver(const OFString &person
     if (subTree != NULL)
     {
         /* TID 1002 (Observer Context) Row 1 */
-        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType));
+        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(CODE_DCM_Person, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1002 - Row 1"));
         /* TID 1003 (Person Observer Identifying Attributes) Row 1 */
@@ -63,22 +64,22 @@ OFCondition TID1001_ObservationContext::addPersonObserver(const OFString &person
         /* TID 1003 (Person Observer Identifying Attributes) Row 2 */
         if (!organizationName.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_PersonObserverOrganizationName));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_PersonObserverOrganizationName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(organizationName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1003 - Row 2"));
         }
         /* TID 1003 (Person Observer Identifying Attributes) Row 3 */
         if (organizationRole.hasSelectedValue())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInTheOrganization));
-            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(organizationRole.getSelectedValue(), check));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInTheOrganization, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(organizationRole, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1003 - Row 3"));
         }
         /* TID 1003 (Person Observer Identifying Attributes) Row 4 */
         if (procedureRole.hasSelectedValue())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInThisProcedure));
-            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(procedureRole.getSelectedValue(), check));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInThisProcedure, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(procedureRole, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1003 - Row 4"));
         }
         /* if everything was OK, insert new subtree into the template */
@@ -86,15 +87,21 @@ OFCondition TID1001_ObservationContext::addPersonObserver(const OFString &person
         {
             const size_t lastNode = subTree->getNodeID();
             /* order is significant, so go to last person observer */
-            gotoLastEntryFromNodeList(this, LAST_PERSON_OBSERVER);
-            /* insert subtree at current position */
-            result = insertSubTree(subTree, AM_afterCurrent);
+            if (gotoLastEntryFromNodeList(this, LAST_PERSON_OBSERVER) > 0)
+            {
+                /* insert subtree at current position */
+                STORE_RESULT(insertSubTree(subTree, AM_afterCurrent));
+            } else {
+                /* this is the first person observer (but there might be device observers) */
+                gotoRoot();
+                /* insert subtree before current position (at the beginning of the tree) */
+                STORE_RESULT(insertSubTree(subTree, AM_beforeCurrent));
+            }
             /* store ID of recently added node for later use */
-            if (result.good())
-                storeEntryInNodeList(LAST_PERSON_OBSERVER, lastNode);
+            GOOD_RESULT(storeEntryInNodeList(LAST_PERSON_OBSERVER, lastNode));
         }
         /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(subTree);
+        BAD_RESULT(delete subTree);
     }
     return result;
 }
@@ -107,6 +114,7 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
                                                           const OFString &serialNumber,
                                                           const OFString &physicalLocation,
                                                           const DeviceParticipatingRolesList &procedureRoles,
+                                                          const OFString &stationAEtitle,
                                                           const OFBool check)
 {
     OFCondition result = EC_MemoryExhausted;
@@ -115,7 +123,7 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
     if (subTree != NULL)
     {
         /* TID 1002 (Observer Context) Row 1 */
-        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType));
+        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(CODE_DCM_Device, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1002 - Row 1"));
         /* TID 1004 (Device Observer Identifying Attributes) Row 1 */
@@ -125,35 +133,35 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
         /* TID 1004 (Device Observer Identifying Attributes) Row 2 */
         if (!deviceName.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverName));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(deviceName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 2"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 3 */
         if (!manufacturer.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverManufacturer));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverManufacturer, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(manufacturer, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 3"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 4 */
         if (!modelName.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverModelName));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverModelName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(modelName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 4"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 5 */
         if (!serialNumber.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverSerialNumber));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverSerialNumber, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(serialNumber, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 5"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 6 */
         if (!physicalLocation.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverPhysicalLocationDuringObservation));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverPhysicalLocationDuringObservation, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(physicalLocation, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 6"));
         }
@@ -165,12 +173,19 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
             /* iterate over all list entries */
             while ((iter != last) && result.good())
             {
-                STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_DeviceRoleInProcedure));
+                STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_DeviceRoleInProcedure, check));
                 CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(iter->getSelectedValue(), check));
                 CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 7"));
                 ++iter;
             }
         }
+        /* TID 1004 (Device Observer Identifying Attributes) Row 8 */
+        if (!stationAEtitle.empty())
+        {
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_StationAETitle, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(stationAEtitle, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 8"));
+        }
         /* if everything was OK, insert new subtree into the template */
         if (result.good())
         {
@@ -178,13 +193,12 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
             /* order is significant, so go to last device (or person) observer */
             gotoLastEntryFromNodeList(this, LAST_DEVICE_OBSERVER);
             /* insert subtree at current position */
-            result = insertSubTree(subTree, AM_afterCurrent);
+            STORE_RESULT(insertSubTree(subTree, AM_afterCurrent));
             /* store ID of recently added node for later use */
-            if (result.good())
-                storeEntryInNodeList(LAST_DEVICE_OBSERVER, lastNode);
+            GOOD_RESULT(storeEntryInNodeList(LAST_DEVICE_OBSERVER, lastNode));
         }
         /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(subTree);
+        BAD_RESULT(delete subTree);
 }
     return result;
 }
index e3b358bbc646b481201f38abba93c20db5d2638e..6f38c0ea2d97c018614c2466d35cd2b16ef3e23b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class TID1204_LanguageOfContentItemAndDescendants
@@ -19,6 +19,8 @@
 // helper macros for checking the return value of API calls
 #define CHECK_RESULT(call) if (result.good()) result = call
 #define STORE_RESULT(call) result = call
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
 
 // general information on TID 1204 (Language of Content Item and Descendants)
 #define TEMPLATE_NUMBER      "1204"
@@ -42,21 +44,17 @@ OFCondition TID1204_LanguageOfContentItemAndDescendants::setLanguage(const CID50
     /* create a new subtree in order to "rollback" in case of error */
     DSRDocumentSubTree subTree;
     /* TID 1204 (Language of Content Item and Descendants) Row 1 */
-    STORE_RESULT(subTree.addContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_LanguageOfContentItemAndDescendants));
-    CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(language.getSelectedValue(), check));
+    STORE_RESULT(subTree.addContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_LanguageOfContentItemAndDescendants, check));
+    CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(language, check));
     CHECK_RESULT(subTree.getCurrentContentItem().setAnnotationText("TID 1204 - Row 1"));
     /* TID 1204 (Language of Content Item and Descendants) Row 2 */
     if (country.hasSelectedValue())
     {
-        CHECK_RESULT(subTree.addChildContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_CountryOfLanguage));
-        CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(country.getSelectedValue(), check));
+        CHECK_RESULT(subTree.addChildContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_CountryOfLanguage, check));
+        CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(country, check));
         CHECK_RESULT(subTree.getCurrentContentItem().setAnnotationText("TID 1204 - Row 2"));
     }
-    /* if everything was OK, insert new subtree into the template */
-    if (result.good())
-    {
-        /* replace currently stored subtree (if any) */
-        swap(subTree);
-    }
+    /* if everything was OK, replace current subtree of the template */
+    GOOD_RESULT(swap(subTree));
     return result;
 }
diff --git a/dcmsr/libcmr/tid1411.cc b/dcmsr/libcmr/tid1411.cc
new file mode 100644 (file)
index 0000000..2334a85
--- /dev/null
@@ -0,0 +1,603 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class TID1411_VolumetricROIMeasurements
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/tid1411.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+#include "dcmtk/dcmsr/cmr/cid7469.h"
+#include "dcmtk/dcmsr/cmr/logger.h"
+#include "dcmtk/dcmsr/codes/dcm.h"
+#include "dcmtk/dcmsr/codes/ncit.h"
+#include "dcmtk/dcmsr/codes/srt.h"
+#include "dcmtk/dcmsr/codes/umls.h"
+
+#include "dcmtk/dcmdata/dcdeftag.h"
+
+
+// helper macros for checking the return value of API calls
+#define CHECK_RESULT(call) if (result.good()) result = call
+#define STORE_RESULT(call) result = call
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
+
+// index positions in node list (makes source code more readable)
+#define MEASUREMENT_GROUP               0
+#define ACTIVITY_SESSION                1
+#define TRACKING_IDENTIFIER             2
+#define TRACKING_UNIQUE_IDENTIFIER      3
+#define FINDING                         4
+#define TIME_POINT                      5
+#define REFERENCED_SEGMENT              6
+#define SOURCE_SERIES_FOR_SEGMENTATION  7
+#define REAL_WORLD_VALUE_MAP            8
+#define MEASUREMENT_METHOD              9
+#define FINDING_SITE                   10
+#define LAST_MEASUREMENT               11
+
+// general information on TID 1411 (Volumetric ROI Measurements)
+#define TEMPLATE_NUMBER      "1411"
+#define MAPPING_RESOURCE     "DCMR"
+#define MAPPING_RESOURCE_UID UID_DICOMContentMappingResource
+#define TEMPLATE_TYPE        OFTrue  /* extensible */
+
+// conditions constants
+makeOFConditionConst(CMR_EC_NoMeasurementGroup,                 OFM_dcmsr, 1411, OF_error, "No Measurement Group");
+makeOFConditionConst(CMR_EC_InvalidSegmentationObject,          OFM_dcmsr, 1412, OF_error, "Invalid Segmentation Object");
+makeOFConditionConst(CMR_EC_InvalidRealWorldValueMappingObject, OFM_dcmsr, 1413, OF_error, "Invalid Real World Value Mapping Object");
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::TID1411_VolumetricROIMeasurements(const OFBool createGroup)
+  : DSRSubTemplate(TEMPLATE_NUMBER, MAPPING_RESOURCE, MAPPING_RESOURCE_UID)
+{
+    setExtensible(TEMPLATE_TYPE);
+    /* need to store position of various content items */
+    reserveEntriesInNodeList(12, OFTrue /*initialize*/);
+    /* TID 1411 (Volumetric ROI Measurements) Row 1 */
+    if (createGroup)
+        createMeasurementGroup();
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::isValid() const
+{
+    /* check whether base class is valid and all required content items are present */
+    return DSRSubTemplate::isValid() &&
+        hasMeasurementGroup() && hasTrackingIdentifier() && hasTrackingUniqueIdentifier() &&
+        hasReferencedSegment() && hasSourceSeriesForSegmentation() && hasROIMeasurements();
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasMeasurementGroup(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1411 (Volumetric ROI Measurements) Row 1 */
+        if (gotoEntryFromNodeList(cursor, MEASUREMENT_GROUP) > 0)
+            result = cursor.hasChildNodes();
+    } else {
+        /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 1 */
+        result = (getEntryFromNodeList(MEASUREMENT_GROUP) > 0);
+    }
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasTrackingIdentifier() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 2 */
+    return (getEntryFromNodeList(TRACKING_IDENTIFIER) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasTrackingUniqueIdentifier() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 3 */
+    return (getEntryFromNodeList(TRACKING_UNIQUE_IDENTIFIER) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasReferencedSegment() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 7 */
+    return (getEntryFromNodeList(REFERENCED_SEGMENT) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasSourceSeriesForSegmentation() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 12 */
+    return (getEntryFromNodeList(SOURCE_SERIES_FOR_SEGMENTATION) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasROIMeasurements() const
+{
+    /* check for content item at TID 1419 (ROI Measurements) Row 5 */
+    return (getEntryFromNodeList(LAST_MEASUREMENT) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setActivitySession(const OFString &session,
+                                                                                  const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!session.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 1b */
+        CHECK_RESULT(addOrReplaceContentItem(ACTIVITY_SESSION, RT_hasObsContext, VT_Text, CODE_NCIt_ActivitySession, "TID 1411 - Row 1b", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(session, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setTrackingIdentifier(const OFString &trackingID,
+                                                                                     const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!trackingID.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 2 */
+        CHECK_RESULT(addOrReplaceContentItem(TRACKING_IDENTIFIER, RT_hasObsContext, VT_Text, CODE_DCM_TrackingIdentifier, "TID 1411 - Row 2", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(trackingID, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setTrackingUniqueIdentifier(const OFString &trackingUID,
+                                                                                           const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!trackingUID.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 3 */
+        CHECK_RESULT(addOrReplaceContentItem(TRACKING_UNIQUE_IDENTIFIER, RT_hasObsContext, VT_UIDRef, CODE_DCM_TrackingUniqueIdentifier, "TID 1411 - Row 3", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(trackingUID, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setFinding(const DSRCodedEntryValue &finding,
+                                                                          const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (finding.isComplete())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 3b */
+        CHECK_RESULT(addOrReplaceContentItem(FINDING, RT_contains, VT_Code, CODE_DCM_Finding, "TID 1411 - Row 3b", check));
+        CHECK_RESULT(getCurrentContentItem().setCodeValue(finding, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setTimePoint(const OFString &timePoint,
+                                                                            const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!timePoint.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1502 (Time Point Context) Row 3 */
+        CHECK_RESULT(addOrReplaceContentItem(TIME_POINT, RT_hasObsContext, VT_Text, CODE_UMLS_TimePoint, "TID 1502 - Row 3", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(timePoint, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setReferencedSegment(const DSRImageReferenceValue &segment,
+                                                                                    const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (segment.isComplete())
+    {
+        const char *annotationText = "TID 1411 - Row 7";
+        const DSRBasicCodedEntry conceptName(CODE_DCM_ReferencedSegment);
+        /* check for supported segmentation SOP classes */
+        if ((segment.getSOPClassUID() != UID_SegmentationStorage) && (segment.getSOPClassUID() != UID_SurfaceSegmentationStorage))
+        {
+            DCMSR_CMR_WARN("Cannot set value of '" << conceptName.CodeMeaning << "' content item (" << annotationText << ") ... wrong SOP Class");
+            DCMSR_CMR_DEBUG("SOP Class UID \"" << segment.getSOPClassUID() << "\" does not match one of the known Segmentation objects");
+            result = CMR_EC_InvalidSegmentationObject;
+        }
+        /*  ... and number of referenced segments */
+        else if ((segment.getSegmentList().getNumberOfItems() != 1))
+        {
+            DCMSR_CMR_WARN("Cannot set value of '" << conceptName.CodeMeaning << "' content item (" << annotationText << ") ... wrong number of segments");
+            result = CMR_EC_InvalidSegmentationObject;
+        } else {
+            /* check whether measurement group already exists */
+            if (!hasMeasurementGroup())
+                result = createMeasurementGroup();
+            /* TID 1411 (Volumetric ROI Measurements) Row 7 */
+            CHECK_RESULT(addOrReplaceContentItem(REFERENCED_SEGMENT, RT_contains, VT_Image, conceptName, annotationText, check));
+            CHECK_RESULT(getCurrentContentItem().setImageReference(segment, check));
+        }
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setReferencedSegment(DcmItem &dataset,
+                                                                                    const Uint16 segmentNumber,
+                                                                                    const OFBool copyTracking,
+                                                                                    const OFBool check)
+{
+    DSRImageReferenceValue segment;
+    /* first, create the referenced image/segment object */
+    OFCondition result = segment.setReference(dataset, check);
+    segment.getSegmentList().addItem(segmentNumber);
+    /* then, add/set the corresponding content item */
+    CHECK_RESULT(setReferencedSegment(segment, check));
+    /* need to copy tracking information? (introduced with CP-1496) */
+    if (copyTracking && result.good())
+    {
+        DcmSequenceOfItems *dseq = NULL;
+        /* get SegmentSequence (should always be present) */
+        result = dataset.findAndGetSequence(DCM_SegmentSequence, dseq);
+        checkElementValue(dseq, DCM_SegmentSequence, "1-n", "1", result, "SegmentDescriptionMacro");
+        if (result.good())
+        {
+            DcmObject *dobj = NULL;
+            OFBool segmentFound = OFFalse;
+            /* iterate over all items in this sequence */
+            while (((dobj = dseq->nextInContainer(dobj)) != NULL) && !segmentFound)
+            {
+                Uint16 number = 0;
+                DcmItem *ditem = OFstatic_cast(DcmItem *, dobj);
+                /* search for given segment number */
+                if (ditem->findAndGetUint16(DCM_SegmentNumber, number).good())
+                {
+                    if (segmentNumber == number)
+                    {
+                        OFString trackingID, trackingUID;
+                        /* get tracking ID and UID from current item (if present) and add/set content item */
+                        getAndCheckStringValueFromDataset(*ditem, DCM_TrackingID, trackingID, "1", "1C", "SegmentSequence");
+                        getAndCheckStringValueFromDataset(*ditem, DCM_TrackingUID, trackingUID, "1", "1C", "SegmentSequence");
+                        if (!trackingID.empty() && !trackingUID.empty())
+                        {
+                            CHECK_RESULT(setTrackingIdentifier(trackingID, check));
+                            CHECK_RESULT(setTrackingUniqueIdentifier(trackingUID, check));
+                        }
+                        else if (trackingID.empty() != trackingUID.empty())
+                        {
+                            /* report a violation of the type 1C conditions */
+                            DCMSR_CMR_WARN("Either Tracking ID or Tracking UID is absent/empty in referenced segmentation object");
+                        }
+                        /* given segment number found */
+                        segmentFound = OFTrue;
+                    }
+                }
+            }
+            /* report a warning if referenced segment could not be found */
+            if (!segmentFound)
+            {
+                DCMSR_CMR_WARN("Cannot copy tracking information for '" << CODE_DCM_ReferencedSegment.CodeMeaning << "' content item (TID 1411 - Row 7) ... segment not found");
+                DCMSR_CMR_DEBUG("Cannot find given Segment Number (" << segmentNumber << ") in Segment Sequence of referenced segmentation object");
+            }
+        } else {
+            /* report a warning if referenced segment could not be found */
+            DCMSR_CMR_WARN("Cannot copy tracking information for '" << CODE_DCM_ReferencedSegment.CodeMeaning << "' content item (TID 1411 - Row 7) ... segment not found");
+        }
+        /* tbc: return with an error in case the tracking information could not be copied? */
+    }
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setSourceSeriesForSegmentation(const OFString &seriesUID,
+                                                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!seriesUID.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 12 */
+        CHECK_RESULT(addOrReplaceContentItem(SOURCE_SERIES_FOR_SEGMENTATION, RT_contains, VT_UIDRef, CODE_DCM_SourceSeriesForSegmentation, "TID 1411 - Row 12", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(seriesUID, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setRealWorldValueMap(const DSRCompositeReferenceValue &valueMap,
+                                                                                    const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (valueMap.isComplete())
+    {
+        const char *annotationText = "TID 1411 - Row 14";
+        const DSRBasicCodedEntry conceptName(CODE_DCM_RealWorldValueMapUsedForMeasurement);
+        /* check for real world value mapping SOP classes */
+        if (valueMap.getSOPClassUID() != UID_RealWorldValueMappingStorage)
+        {
+            DCMSR_CMR_WARN("Cannot set value of '" << conceptName.CodeMeaning << "' content item (" << annotationText << ") ... wrong SOP Class");
+            DCMSR_CMR_DEBUG("SOP Class UID \"" << valueMap.getSOPClassUID() << "\" does not match the one of the Real World Value Mapping object");
+            result = CMR_EC_InvalidRealWorldValueMappingObject;
+        } else {
+            /* check whether measurement group already exists */
+            if (!hasMeasurementGroup())
+                result = createMeasurementGroup();
+            /* TID 1411 (Volumetric ROI Measurements) Row 14 */
+            CHECK_RESULT(addOrReplaceContentItem(REAL_WORLD_VALUE_MAP, RT_contains, VT_Composite, conceptName, annotationText, check));
+            CHECK_RESULT(getCurrentContentItem().setCompositeReference(valueMap, check));
+        }
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setRealWorldValueMap(DcmItem &dataset,
+                                                                                    const OFBool check)
+{
+    DSRCompositeReferenceValue valueMap;
+    /* first, create the referenced composite object */
+    OFCondition result = valueMap.setReference(dataset, check);
+    /* then, add/set the corresponding content item */
+    CHECK_RESULT(setRealWorldValueMap(valueMap, check));
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T_Method, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T_Method, T4>::setMeasurementMethod(const T_Method &method,
+                                                                                          const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (method.hasSelectedValue())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1419 (ROI Measurements) Row 1 */
+        CHECK_RESULT(addOrReplaceContentItem(MEASUREMENT_METHOD, RT_hasConceptMod, VT_Code, CODE_SRT_MeasurementMethod, "TID 1419 - Row 1", check));
+        CHECK_RESULT(getCurrentContentItem().setCodeValue(method, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setFindingSite(const DSRCodedEntryValue &site,
+                                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (site.isComplete())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1419 (ROI Measurements) Row 2 */
+        CHECK_RESULT(addOrReplaceContentItem(FINDING_SITE, RT_hasConceptMod, VT_Code, CODE_SRT_FindingSite, "TID 1419 - Row 2", check));
+        CHECK_RESULT(getCurrentContentItem().setCodeValue(site, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T_Measurement, typename T_Units, typename T_Method, typename T_Derivation>
+OFCondition TID1411_VolumetricROIMeasurements<T_Measurement, T_Units, T_Method, T_Derivation>::addMeasurement(const T_Measurement &conceptName,
+                                                                                                              const MeasurementValue &numericValue,
+                                                                                                              const T_Method &method,
+                                                                                                              const T_Derivation &derivation,
+                                                                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of mandatory parameters */
+    if (conceptName.hasSelectedValue() && numericValue.isComplete())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        if (result.good())
+        {
+            /* create a new subtree in order to "rollback" in case of error */
+            DSRDocumentSubTree *subTree = new DSRDocumentSubTree;
+            if (subTree != NULL)
+            {
+                /* TID 1419 (ROI Measurements) Row 5 */
+                STORE_RESULT(subTree->addContentItem(RT_contains, VT_Num, conceptName, check));
+                CHECK_RESULT(subTree->getCurrentContentItem().setNumericValue(numericValue, check));
+                CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1419 - Row 5"));
+                const size_t lastNode = subTree->getNodeID();
+                /* TID 1419 (ROI Measurements) Row 7 - optional */
+                if (method.hasSelectedValue())
+                {
+                    CHECK_RESULT(subTree->addChildContentItem(RT_hasConceptMod, VT_Code, CODE_SRT_MeasurementMethod, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(method, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1419 - Row 7"));
+                    GOOD_RESULT(subTree->gotoParent());
+                }
+                /* TID 1419 (ROI Measurements) Row 8 - optional */
+                if (derivation.hasSelectedValue())
+                {
+                    CHECK_RESULT(subTree->addChildContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_Derivation, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(derivation, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1419 - Row 8"));
+                    GOOD_RESULT(subTree->gotoParent());
+                }
+                /* if everything was OK, insert new subtree into the template */
+                if (result.good() && !subTree->isEmpty())
+                {
+                    /* go to last measurement (if any) */
+                    if (gotoLastEntryFromNodeList(this, LAST_MEASUREMENT) > 0)
+                    {
+                        /* insert subtree at current position */
+                        STORE_RESULT(insertSubTree(subTree, AM_afterCurrent));
+                        /* store ID of recently added node for later use */
+                        GOOD_RESULT(storeEntryInNodeList(LAST_MEASUREMENT, lastNode));
+                    } else {
+                        /* should never happen but ... */
+                        result = CMR_EC_NoMeasurementGroup;
+                    }
+                    /* in case of error, make sure that memory is freed */
+                    BAD_RESULT(delete subTree);
+                } else {
+                    /* delete the new subtree since it has not been inserted */
+                    delete subTree;
+                }
+            } else
+                result = EC_MemoryExhausted;
+        }
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+// protected methods
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::createMeasurementGroup()
+{
+    OFCondition result = SR_EC_InvalidTemplateStructure;
+    if (isEmpty())
+    {
+        /* TID 1411 (Volumetric ROI Measurements) Row 1 */
+        STORE_RESULT(addContentItem(RT_unknown, VT_Container, CODE_DCM_MeasurementGroup));
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1411 - Row 1"));
+        /* store ID of root node for later use */
+        GOOD_RESULT(storeEntryInNodeList(MEASUREMENT_GROUP, getNodeID()));
+    }
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::addOrReplaceContentItem(const size_t nodePos,
+                                                                                       const E_RelationshipType relationshipType,
+                                                                                       const E_ValueType valueType,
+                                                                                       const DSRCodedEntryValue &conceptName,
+                                                                                       const OFString &annotationText,
+                                                                                       const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        /* check whether content item already exists */
+        if (getEntryFromNodeList(nodePos) == 0)
+        {
+            /* if not, create the content item (at correct position) */
+            if (gotoLastEntryFromNodeList(this, nodePos) == getEntryFromNodeList(MEASUREMENT_GROUP))
+            {
+                /* need to add the new content item as the first child */
+                if (addContentItem(relationshipType, valueType, AM_belowCurrentBeforeFirstChild) > 0)
+                {
+                    if (getCurrentContentItem().setConceptName(conceptName, check).bad())
+                        result = SR_EC_InvalidConceptName;
+                } else
+                    result = SR_EC_CannotAddContentItem;
+
+            } else {
+                /* add new content item as a sibling (after the current one) */
+                STORE_RESULT(addContentItem(relationshipType, valueType, conceptName));
+            }
+            /* store ID of added node for later use */
+            GOOD_RESULT(storeEntryInNodeList(nodePos, getNodeID()));
+        }
+        else if (gotoEntryFromNodeList(this, nodePos) > 0)
+        {
+            /* make sure that the value type of the existing content item is correct */
+            if (getCurrentContentItem().getValueType() != valueType)
+            {
+                DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ") ... wrong value type");
+                result = SR_EC_InvalidContentItem;
+            }
+            else if (getCurrentContentItem().getConceptName() != conceptName)
+            {
+                DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ") ... wrong concept name");
+                result = SR_EC_InvalidConceptName;
+            } else {
+                DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ")");
+            }
+        } else
+            result = SR_EC_InvalidTemplateStructure;
+        /* finally, set annotation */
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
+// explicit template instantiation (needed for use in TID 1500)
+template class TID1411_VolumetricROIMeasurements<CID7469_GenericIntensityAndSizeMeasurements,
+                                                 CID7181_AbstractMultiDimensionalImageModelComponentUnits,
+                                                 CID6147_ResponseCriteria,
+                                                 CID7464_GeneralRegionOfInterestMeasurementModifiers>;
diff --git a/dcmsr/libcmr/tid1500.cc b/dcmsr/libcmr/tid1500.cc
new file mode 100644 (file)
index 0000000..3c4b7b2
--- /dev/null
@@ -0,0 +1,373 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class TID1500_MeasurementReport
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/tid1500.h"
+#include "dcmtk/dcmsr/cmr/logger.h"
+#include "dcmtk/dcmsr/codes/dcm.h"
+#include "dcmtk/dcmsr/codes/umls.h"
+
+#include "dcmtk/dcmsr/dsrtpltn.h"
+
+
+// helper macros for checking the return value of API calls
+#define CHECK_RESULT(call) if (result.good()) result = call
+#define STORE_RESULT(call) result = call
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
+
+// index positions in node list (makes source code more readable)
+#define MEASUREMENT_REPORT               0
+#define OBSERVATION_CONTEXT              1
+#define LAST_PROCEDURE_REPORTED          2
+#define IMAGING_MEASUREMENTS             3
+#define LAST_VOLUMETRIC_ROI_MEASUREMENTS 4
+#define QUALITATIVE_EVALUATIONS          5
+
+// general information on TID 1500 (Measurement Report)
+#define TEMPLATE_NUMBER      "1500"
+#define MAPPING_RESOURCE     "DCMR"
+#define MAPPING_RESOURCE_UID UID_DICOMContentMappingResource
+#define TEMPLATE_TYPE        OFTrue  /* extensible */
+
+// conditions constants
+makeOFConditionConst(CMR_EC_NoMeasurementReport, OFM_dcmsr, 1500, OF_error, "No Measurement Report");
+
+
+TID1500_MeasurementReport::TID1500_MeasurementReport(const CID7021_MeasurementReportDocumentTitles &title)
+  : DSRRootTemplate(DT_EnhancedSR, TEMPLATE_NUMBER, MAPPING_RESOURCE, MAPPING_RESOURCE_UID),
+    Language(new TID1204_LanguageOfContentItemAndDescendants()),
+    ObservationContext(new TID1001_ObservationContext()),
+    ImageLibrary(new TID1600_ImageLibrary()),
+    VolumetricROIMeasurements(new TID1411_Measurements())
+{
+    setExtensible(TEMPLATE_TYPE);
+    /* need to store position of various content items */
+    reserveEntriesInNodeList(6, OFTrue /*initialize*/);
+    /* if specified, create an initial report */
+    if (title.hasSelectedValue())
+        createMeasurementReport(title);
+}
+
+
+void TID1500_MeasurementReport::clear()
+{
+    DSRRootTemplate::clear();
+    Language->clear();
+    ObservationContext->clear();
+    ImageLibrary->clear();
+    VolumetricROIMeasurements->clear();
+}
+
+
+OFBool TID1500_MeasurementReport::isValid() const
+{
+    /* check whether base class is valid and all required content items are present */
+    return DSRRootTemplate::isValid() &&
+        Language->isValid() && ObservationContext->isValid() && ImageLibrary->isValid() &&
+        hasProcedureReported() && (hasImagingMeasurements() || hasQualitativeEvaluations());
+}
+
+
+OFBool TID1500_MeasurementReport::hasProcedureReported() const
+{
+    /* check for content item at TID 1500 (Measurement Report) Row 4 */
+    return (getEntryFromNodeList(LAST_PROCEDURE_REPORTED) > 0);
+}
+
+
+OFBool TID1500_MeasurementReport::hasImagingMeasurements(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1500 (Measurement Report) Row 6 */
+        if (gotoEntryFromNodeList(cursor, IMAGING_MEASUREMENTS) > 0)
+        {
+            /* check whether any of the "included templates" is non-empty */
+            if (cursor.gotoChild())
+            {
+                while (cursor.isValid() && (cursor.getNode()->getValueType() == VT_includedTemplate))
+                {
+                    const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, cursor.getNode())->getValue().get();
+                    if (subTempl != NULL)
+                    {
+                        result = !subTempl->isEmpty();
+                        if (result) break;
+                    }
+                    if (cursor.gotoNext() == 0)
+                    {
+                        /* invalidate cursor */
+                        cursor.clear();
+                    }
+                }
+            }
+        }
+    } else {
+        /* check for content item at TID 1500 (Measurement Report) Row 6 */
+        result = (getEntryFromNodeList(IMAGING_MEASUREMENTS) > 0);
+    }
+    return result;
+}
+
+
+OFBool TID1500_MeasurementReport::hasVolumetricROIMeasurements(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1500 (Measurement Report) Row 8 */
+        if (gotoEntryFromNodeList(cursor, LAST_VOLUMETRIC_ROI_MEASUREMENTS) > 0)
+        {
+            /* check whether any of the "included TID 1411 templates" is non-empty */
+            while (cursor.isValid() && (cursor.getNode()->getValueType() == VT_includedTemplate))
+            {
+                const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, cursor.getNode())->getValue().get();
+                if (subTempl != NULL)
+                {
+                    if (subTempl->compareTemplateIdentication("1411", "DCMR"))
+                    {
+                        result = !subTempl->isEmpty();
+                        if (result) break;
+                    } else {
+                        /* exit loop */
+                        break;
+                    }
+                }
+                if (cursor.gotoPrevious() == 0)
+                {
+                    /* invalidate cursor */
+                    cursor.clear();
+                }
+            }
+        }
+    } else {
+        /* check for content item at TID 1500 (Measurement Report) Row 8 */
+        result = (getEntryFromNodeList(LAST_VOLUMETRIC_ROI_MEASUREMENTS) > 0);
+    }
+    return result;
+}
+
+
+OFBool TID1500_MeasurementReport::hasQualitativeEvaluations(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1500 (Measurement Report) Row 12 */
+        if (gotoEntryFromNodeList(cursor, QUALITATIVE_EVALUATIONS) > 0)
+            result = cursor.hasChildNodes();
+    } else {
+        /* check for content item at TID 1500 (Measurement Report) Row 12 */
+        result = (getEntryFromNodeList(QUALITATIVE_EVALUATIONS) > 0);
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::getDocumentTitle(DSRCodedEntryValue &titleCode)
+{
+    OFCondition result = EC_Normal;
+    /* go to content item at TID 1500 (Measurement Report) Row 1 */
+    if (gotoEntryFromNodeList(this, MEASUREMENT_REPORT) > 0)
+    {
+        titleCode = getCurrentContentItem().getConceptName();
+    } else {
+        /* in case of error, clear the result variable */
+        titleCode.clear();
+        result = SR_EC_ContentItemNotFound;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::createNewMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title)
+{
+    clear();
+    /* TID 1500 (Measurement Report) Row 1 */
+    return createMeasurementReport(title);
+}
+
+
+OFCondition TID1500_MeasurementReport::setLanguage(const CID5000_Languages &language,
+                                                   const CID5001_Countries &country,
+                                                   const OFBool check)
+{
+    /* TID 1500 (Measurement Report) Row 2 */
+    return getLanguage().setLanguage(language, country, check);
+}
+
+
+OFCondition TID1500_MeasurementReport::addProcedureReported(const CID100_QuantitativeDiagnosticImagingProcedures &procedure,
+                                                            const OFBool check)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that there is a coded entry */
+    if (procedure.hasSelectedValue())
+    {
+        /* go to last content item at TID 1500 (Measurement Report) Row 3 or 4 */
+        if (gotoLastEntryFromNodeList(this, LAST_PROCEDURE_REPORTED, OBSERVATION_CONTEXT) > 0)
+        {
+            /* TID 1500 (Measurement Report) Row 4 */
+            STORE_RESULT(addContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_ProcedureReported, check));
+            CHECK_RESULT(getCurrentContentItem().setCodeValue(procedure, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 4"));
+            /* store ID of recently added node for later use */
+            GOOD_RESULT(storeEntryInNodeList(LAST_PROCEDURE_REPORTED, getNodeID()));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::addVolumetricROIMeasurements()
+{
+    OFCondition result = CMR_EC_NoMeasurementReport;
+    /* go to content item at TID 1500 (Measurement Report) Row 8 */
+    if (gotoEntryFromNodeList(this, LAST_VOLUMETRIC_ROI_MEASUREMENTS) > 0)
+    {
+        /* create new instance of TID 1411 (Volumetric ROI Measurements) */
+        TID1411_Measurements *subTempl = new TID1411_Measurements();
+        if (subTempl != NULL)
+        {
+            /* store (shared) reference to new instance */
+            VolumetricROIMeasurements.reset(subTempl);
+            /* and add it to the current template (TID 1500 - Row 8) */
+            STORE_RESULT(includeTemplate(VolumetricROIMeasurements, AM_afterCurrent, RT_contains));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 8"));
+            GOOD_RESULT(storeEntryInNodeList(LAST_VOLUMETRIC_ROI_MEASUREMENTS, getNodeID()));
+            /* tbc: what if the call of includeTemplate() fails? */
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                                                const DSRCodedEntryValue &codeValue,
+                                                                const OFBool check)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that the parameters are non-empty */
+    if (conceptName.isComplete() && codeValue.isComplete())
+    {
+        /* create content item at TID 1500 (Measurement Report) Row 12 if not existing */
+        result = createQualitativeEvaluations();
+        /* go to content item at TID 1500 (Measurement Report) Row 12 */
+        if (gotoEntryFromNodeList(this, QUALITATIVE_EVALUATIONS) > 0)
+        {
+            /* TID 1500 (Measurement Report) Row 13 */
+            CHECK_RESULT(addChildContentItem(RT_contains, VT_Code, conceptName, check));
+            CHECK_RESULT(getCurrentContentItem().setCodeValue(codeValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 13"));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                                                const OFString &stringValue,
+                                                                const OFBool check)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that the parameters are non-empty */
+    if (conceptName.isComplete() && !stringValue.empty())
+    {
+        /* create content item at TID 1500 (Measurement Report) Row 12 if not existing */
+        result = createQualitativeEvaluations();
+        /* go to content item at TID 1500 (Measurement Report) Row 12 */
+        if (gotoEntryFromNodeList(this, QUALITATIVE_EVALUATIONS) > 0)
+        {
+            /* TID 1500 (Measurement Report) Row 14 */
+            CHECK_RESULT(addChildContentItem(RT_contains, VT_Text, conceptName, check));
+            CHECK_RESULT(getCurrentContentItem().setStringValue(stringValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 14"));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
+
+
+// protected methods
+
+OFCondition TID1500_MeasurementReport::createMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that there is a coded entry */
+    if (title.hasSelectedValue())
+    {
+        /* reassure that the report is definitely empty */
+        if (isEmpty())
+        {
+            /* TID 1500 (Measurement Report) Row 1 */
+            STORE_RESULT(addContentItem(RT_isRoot, VT_Container, title));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 1"));
+            /* store ID of root node for later use */
+            if (result.good())
+                storeEntryInNodeList(MEASUREMENT_REPORT, getNodeID());
+            /* TID 1500 (Measurement Report) Row 2 */
+            CHECK_RESULT(includeTemplate(Language, AM_belowCurrent, RT_hasConceptMod));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 2"));
+            /* TID 1500 (Measurement Report) Row 3 */
+            CHECK_RESULT(includeTemplate(ObservationContext, AM_afterCurrent, RT_hasObsContext));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 3"));
+            GOOD_RESULT(storeEntryInNodeList(OBSERVATION_CONTEXT, getNodeID()));
+            /* TID 1500 (Measurement Report) Row 5 */
+            CHECK_RESULT(includeTemplate(ImageLibrary, AM_afterCurrent, RT_contains));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 5"));
+            /* TID 1500 (Measurement Report) Row 6 */
+            CHECK_RESULT(addContentItem(RT_contains, VT_Container, CODE_DCM_ImagingMeasurements));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 6"));
+            GOOD_RESULT(storeEntryInNodeList(IMAGING_MEASUREMENTS, getNodeID()));
+            /* TID 1500 (Measurement Report) Row 8 */
+            CHECK_RESULT(includeTemplate(VolumetricROIMeasurements, AM_belowCurrent, RT_contains));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 8"));
+            GOOD_RESULT(storeEntryInNodeList(LAST_VOLUMETRIC_ROI_MEASUREMENTS, getNodeID()));
+            /* if anything went wrong, clear the report */
+            BAD_RESULT(clear());
+        } else
+            result = SR_EC_InvalidTemplateStructure;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::createQualitativeEvaluations()
+{
+    OFCondition result = EC_Normal;
+    /* check whether content item at TID 1500 (Measurement Report) Row 12 already exists */
+    if (!hasQualitativeEvaluations())
+    {
+        /* if not, go to the preceding content item, which always exists */
+        if (gotoEntryFromNodeList(this, IMAGING_MEASUREMENTS) > 0)
+        {
+            /* ... and add TID 1500 (Measurement Report) Row 12 */
+            STORE_RESULT(addContentItem(RT_contains, VT_Container, CODE_UMLS_QualitativeEvaluations));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 12"));
+            GOOD_RESULT(storeEntryInNodeList(QUALITATIVE_EVALUATIONS, getNodeID()));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
index a42276d5626962458a0ca6c1dd4dfd7f37aebd4b..f082ac9983cb3d06a4fbe7dd80ce24d16fd3ae12 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class TID1600_ImageLibrary
 #include "dcmtk/dcmsr/codes/ucum.h"
 
 #include "dcmtk/dcmsr/dsrdattn.h"
-#include "dcmtk/dcmsr/dsrnumvl.h"
 
 
 // helper macros for checking the return value of API calls
 #define CHECK_RESULT(call) if (result.good()) result = call
 #define STORE_RESULT(call) result = call
-#define DELETE_ERROR(pointer) if (result.bad()) delete pointer
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
 
 // index positions in node list (makes source code more readable)
-#define LAST_IMAGE_LIBRARY_GROUP 0
-#define LAST_IMAGE_LIBRARY_ENTRY 1
+#define IMAGE_LIBRARY            0
+#define LAST_IMAGE_LIBRARY_GROUP 1
+#define LAST_IMAGE_LIBRARY_ENTRY 2
 
 // general information on TID 1600 (Image Library)
 #define TEMPLATE_NUMBER      "1600"
 
 
 // conditions constants
-makeOFConditionConst(CMR_EC_NoImageLibraryGroup,                           OFM_dcmsr, 1600, OF_error, "No Image Library Group");
-makeOFConditionConst(CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors, OFM_dcmsr, 1602, OF_error, "Cannot add multiple Image Library Entry Descriptors");
+makeOFConditionConst(CMR_EC_NoImageLibrary,                                OFM_dcmsr, 1600, OF_error, "No Image Library");
+makeOFConditionConst(CMR_EC_NoImageLibraryGroup,                           OFM_dcmsr, 1601, OF_error, "No Image Library Group");
+makeOFConditionConst(CMR_EC_NoImageLibraryEntry,                           OFM_dcmsr, 1602, OF_error, "No Image Library Entry");
+makeOFConditionConst(CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors, OFM_dcmsr, 1603, OF_error, "Cannot add multiple Image Library Entry Descriptors");
+makeOFConditionConst(CMR_EC_MissingImageLibraryEntryDescriptorModality,    OFM_dcmsr, 1604, OF_error, "Missing Image Library Entry Descriptor 'Modality'");
+makeOFConditionConst(CMR_EC_WrongImageLibraryEntryDescriptorModality,      OFM_dcmsr, 1605, OF_error, "Wrong Image Library Entry Descriptor 'Modality'");
+makeOFConditionConst(CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded,       OFM_dcmsr, 1606, OF_ok,    "No Image Library Entry Descriptors to be added");
 
 
-TID1600_ImageLibrary::TID1600_ImageLibrary()
+TID1600_ImageLibrary::TID1600_ImageLibrary(const OFBool createLibrary)
   : DSRSubTemplate(TEMPLATE_NUMBER, MAPPING_RESOURCE, MAPPING_RESOURCE_UID)
 {
     setExtensible(TEMPLATE_TYPE);
-    /* need to store last image library group and entry */
-    reserveEntriesInNodeList(2);
+    /* need to store image library, last image library group and entry */
+    reserveEntriesInNodeList(3);
     /* TID 1600 (Image Library) Row 1 */
-    if (addChildContentItem(RT_unknown, VT_Container, CODE_DCM_ImageLibrary).good())
-        getCurrentContentItem().setAnnotationText("TID 1600 - Row 1");
+    if (createLibrary)
+        createImageLibrary();
+}
+
+
+OFBool TID1600_ImageLibrary::isValid() const
+{
+    /* check whether base class is valid and image library exists */
+    return DSRSubTemplate::isValid() && hasImageLibrary();
+}
+
+
+OFBool TID1600_ImageLibrary::hasImageLibrary() const
+{
+    /* check for image library (TID 1600 - Row 1) */
+    return (getEntryFromNodeList(IMAGE_LIBRARY) > 0);
+}
+
+
+OFBool TID1600_ImageLibrary::hasImageLibraryGroup() const
+{
+    /* check for image library group (TID 1600 - Row 2) */
+    return (getEntryFromNodeList(LAST_IMAGE_LIBRARY_GROUP) > 0);
+}
+
+
+OFCondition TID1600_ImageLibrary::createNewImageLibrary()
+{
+    clear();
+    /* TID 1600 (Image Library) Row 1 */
+    return createImageLibrary();
 }
 
 
 OFCondition TID1600_ImageLibrary::addImageGroup()
 {
-    OFCondition result = EC_Normal;
-    /* go to last image library group (if any) */
-    if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
-    {
-        /* TID 1600 (Image Library) Row 2, append to last group */
-        STORE_RESULT(addContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
-    } else {
-        /* TID 1600 (Image Library) Row 2, create first group (child) */
-        STORE_RESULT(addChildContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
-    }
-    CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1600 - Row 2"));
-    /* store ID of recently added node for later use */
-    if (result.good())
+    OFCondition result = CMR_EC_NoImageLibrary;
+    /* check whether image library exists */
+    if (hasImageLibrary())
     {
-        storeEntryInNodeList(LAST_IMAGE_LIBRARY_GROUP, getNodeID());
-        storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, 0 /* forget last entry */);
+        /* go to last image library group (if any) */
+        if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
+        {
+            /* TID 1600 (Image Library) Row 2, append to last group */
+            STORE_RESULT(addContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
+        }
+        /* go to image library (root node) */
+        else if (gotoEntryFromNodeList(this, IMAGE_LIBRARY) > 0)
+        {
+            /* TID 1600 (Image Library) Row 2, create first group (child) */
+            STORE_RESULT(addChildContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
+        } else {
+            /* should never happen but ... */
+            result = SR_EC_InvalidTemplateStructure;
+        }
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1600 - Row 2"));
+        /* store ID of recently added node for later use */
+        if (result.good())
+        {
+            storeEntryInNodeList(LAST_IMAGE_LIBRARY_GROUP, getNodeID());
+            storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, 0 /* forget last entry */);
+        }
     }
     return result;
 }
 
 
-
 OFCondition TID1600_ImageLibrary::addImageEntry(DcmItem &dataset,
                                                 const AddImageMode mode,
                                                 const OFBool check)
 {
-    OFCondition result = EC_MemoryExhausted;
-    /* create a new subtree in order to "rollback" in case of error */
-    DSRDocumentSubTree *tid1601 = new DSRDocumentSubTree;
-    if (tid1601 != NULL)
+    OFCondition result = CMR_EC_NoImageLibraryGroup;
+    /* check whether image library group exists */
+    if (hasImageLibraryGroup())
     {
-        DSRImageReferenceValue imageRef;
-        /* TID 1601 (Image Library Entry) Row 1 */
-        STORE_RESULT(tid1601->addContentItem(RT_contains, VT_Image, DSRCodedEntryValue()));
-        CHECK_RESULT(imageRef.setReference(dataset, check));
-        CHECK_RESULT(tid1601->getCurrentContentItem().setImageReference(imageRef, check));
-        CHECK_RESULT(tid1601->getCurrentContentItem().setAnnotationText("TID 1601 - Row 1"));
-        const size_t lastNode = tid1601->getNodeID();
-        /* TID 1601 (Image Library Entry) Row 2 */
-        if (mode == withAllDescriptors)
+        /* create a new subtree in order to "rollback" in case of error */
+        DSRDocumentSubTree *tid1601 = new DSRDocumentSubTree;
+        if (tid1601 != NULL)
         {
-            /* create a new subtree for TID 1602 (Image Library Entry Descriptors) */
-            DSRDocumentSubTree *tid1602 = new DSRDocumentSubTree;
-            if (tid1602 != NULL)
+            DSRImageReferenceValue imageRef;
+            /* TID 1601 (Image Library Entry) Row 1 */
+            STORE_RESULT(tid1601->addContentItem(RT_contains, VT_Image, DSRCodedEntryValue(), check));
+            CHECK_RESULT(imageRef.setReference(dataset, check));
+            CHECK_RESULT(tid1601->getCurrentContentItem().setImageReference(imageRef, check));
+            CHECK_RESULT(tid1601->getCurrentContentItem().setAnnotationText("TID 1601 - Row 1"));
+            const size_t lastNode = tid1601->getNodeID();
+            /* TID 1601 (Image Library Entry) Row 2 */
+            if (mode == withAllDescriptors)
             {
-                /* call the function doing the real work */
-                result = addImageEntryDescriptors(*tid1602, dataset, check);
-                /* if everything was OK, insert new subtree into the template */
-                if (result.good() && !tid1602->isEmpty())
+                /* create a new subtree for TID 1602 (Image Library Entry Descriptors) */
+                DSRDocumentSubTree *tid1602 = new DSRDocumentSubTree;
+                if (tid1602 != NULL)
                 {
-                    /* insert subtree below current node */
-                    result = tid1601->insertSubTree(tid1602);
-                }
-                /* in case of error, make sure that memory is freed */
-                DELETE_ERROR(tid1602);
-            } else
-                result = EC_MemoryExhausted;
-        }
-        /* if everything was OK, insert new subtree into the template */
-        if (result.good())
-        {
-            E_AddMode addMode = AM_afterCurrent;
-            /* go to last image library entry (if any) */
-            if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
-                addMode = AM_afterCurrent;
-            /* go to last image library group (if any) */
-            else if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
-                addMode = AM_belowCurrent;
-            else
-                result = CMR_EC_NoImageLibraryGroup;
-            /* there is at least an image library group */
+                    /* call the function doing the real work */
+                    STORE_RESULT(addImageEntryDescriptors(*tid1602, dataset, check));
+                    /* if everything was OK, insert new subtree into the template */
+                    if (result.good() && !tid1602->isEmpty())
+                    {
+                        /* insert subtree below current node */
+                        STORE_RESULT(tid1601->insertSubTree(tid1602));
+                        /* in case of error, make sure that memory is freed */
+                        BAD_RESULT(delete tid1602);
+                    } else {
+                        CHECK_RESULT(CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded);
+                        /* delete the new subtree since it has not been inserted */
+                        delete tid1602;
+                    }
+                } else
+                    result = EC_MemoryExhausted;
+            }
+            /* if everything was OK, insert new subtree into the template */
             if (result.good())
             {
-                /* insert subtree at current position */
-                result = insertSubTree(tid1601, addMode);
-                /* store ID of recently added node for later use */
+                E_AddMode addMode = AM_afterCurrent;
+                /* go to last image library entry (if any) */
+                if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
+                    addMode = AM_afterCurrent;
+                /* go to last image library group */
+                else if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
+                    addMode = AM_belowCurrent;
+                else {
+                    /* should never happen but ... */
+                    result = CMR_EC_NoImageLibraryGroup;
+                }
+                /* there is at least an image library group */
                 if (result.good())
-                    storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, lastNode);
+                {
+                    /* insert subtree at current position */
+                    STORE_RESULT(insertSubTree(tid1601, addMode));
+                    /* store ID of recently added node for later use */
+                    GOOD_RESULT(storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, lastNode));
+                }
             }
-        }
-        /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(tid1601);
+            /* in case of error, make sure that memory is freed */
+            BAD_RESULT(delete tid1601);
+        } else
+            result = EC_MemoryExhausted;
     }
     return result;
 }
@@ -152,42 +206,179 @@ OFCondition TID1600_ImageLibrary::addImageEntry(DcmItem &dataset,
 OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DcmItem &dataset,
                                                            const OFBool check)
 {
-    OFCondition result = EC_MemoryExhausted;
-    /* create a new subtree in order to "rollback" in case of error */
-    DSRDocumentSubTree *subTree = new DSRDocumentSubTree;
-    if (subTree != NULL)
+    OFCondition result = CMR_EC_NoImageLibraryGroup;
+    /* check whether image library group exists */
+    if (hasImageLibraryGroup())
     {
-        /* call the function doing the real work */
-        result = addImageEntryDescriptors(*subTree, dataset, check);
-        /* if everything was OK, insert new subtree into the template */
-        if (result.good() && !subTree->isEmpty())
+        /* create a new subtree in order to "rollback" in case of error */
+        DSRDocumentSubTree *subTree = new DSRDocumentSubTree;
+        if (subTree != NULL)
         {
-            /* go to last image library group (if any) */
-            if (gotoLastEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
+            /* call the function doing the real work */
+            STORE_RESULT(addImageEntryDescriptors(*subTree, dataset, check));
+            /* if everything was OK, insert new subtree into the template */
+            if (result.good() && !subTree->isEmpty())
             {
-
-                /* check whether TID 1600 (Image Library) Row 3 is already there */
-                const DSRDocumentTreeNode *childNode = getChildNode();
-                if ((childNode != NULL) && (childNode->getRelationshipType() == RT_hasAcqContext))
+                /* go to last image library group (if any) */
+                if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
                 {
-                    /* only a single invocation of the included template allowed */
-                    result = CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors;
+                    /* check whether TID 1600 (Image Library) Row 3 is already there */
+                    const DSRDocumentTreeNode *childNode = getChildNode();
+                    if ((childNode != NULL) && (childNode->getRelationshipType() == RT_hasAcqContext))
+                    {
+                        /* only a single invocation of the included template allowed */
+                        result = CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors;
+                    } else {
+                        /* insert subtree at current position */
+                        STORE_RESULT(insertSubTree(subTree, AM_belowCurrentBeforeFirstChild));
+                    }
                 } else {
-                    /* insert subtree at current position */
-                    result = insertSubTree(subTree, AM_belowCurrentBeforeFirstChild);
+                    /* should never happen but ... */
+                    result = CMR_EC_NoImageLibraryGroup;
                 }
-            } else
-                result = CMR_EC_NoImageLibraryGroup;
-        }
-        /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(subTree);
+                /* in case of error, make sure that memory is freed */
+                BAD_RESULT(delete subTree);
+            } else {
+                CHECK_RESULT(CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded);
+                /* delete the new subtree since it has not been inserted */
+                delete subTree;
+            }
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::getImageEntryModality(DSRCodedEntryValue &modalityCode)
+{
+    OFCondition result = CMR_EC_NoImageLibraryEntry;
+    /* go to last image library entry (if any) */
+    if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
+    {
+        /* get value of TID 1602 (Image Library Entry Descriptors) Row 1 */
+        if ((gotoNamedChildNode(CODE_DCM_Modality, OFFalse /*searchIntoSub*/) > 0))
+        {
+            modalityCode = getCurrentContentItem().getCodeValue();
+            result = EC_Normal;
+        } else
+            result = CMR_EC_MissingImageLibraryEntryDescriptorModality;
     }
+    /* in case of error, clear the result variable */
+    BAD_RESULT(modalityCode.clear());
+    return result;
+}
+
+
+// set methods
+
+OFCondition TID1600_ImageLibrary::setPETImageRadionuclide(const CID4020_PETRadionuclide &radionuclide,
+                                                          const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setCodeContentItemFromValue(CODE_SRT_Radionuclide, radionuclide, "TID 1607 - Row 1", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalAgent(const CID4021_PETRadiopharmaceutical &agent,
+                                                                      const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setCodeContentItemFromValue(CODE_SRT_RadiopharmaceuticalAgent, agent, "TID 1607 - Row 2", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalStartDateTime(const OFString &dateTime,
+                                                                              const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setStringContentItemFromValue(VT_DateTime, CODE_DCM_RadiopharmaceuticalStartTime /*DateTime*/, dateTime, "TID 1607 - Row 4", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalStopDateTime(const OFString &dateTime,
+                                                                             const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setStringContentItemFromValue(VT_DateTime, CODE_DCM_RadiopharmaceuticalStopTime /*DateTime*/, dateTime, "TID 1607 - Row 5", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalVolume(const CMR_SRNumericMeasurementValue &volume,
+                                                                       const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setNumericContentItemFromValue(CODE_DCM_RadiopharmaceuticalVolume, volume, CODE_UCUM_cm3 /*might change with a CP*/, "TID 1607 - Row 6", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadionuclideTotalDose(const CMR_SRNumericMeasurementValue &totalDose,
+                                                                   const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setNumericContentItemFromValue(CODE_DCM_RadionuclideTotalDose, totalDose, CODE_UCUM_Bq, "TID 1607 - Row 7", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
     return result;
 }
 
 
 // protected methods
 
+OFCondition TID1600_ImageLibrary::createImageLibrary()
+{
+    OFCondition result = SR_EC_InvalidTemplateStructure;
+    if (isEmpty())
+    {
+        /* TID 1600 (Image Library) Row 1 */
+        STORE_RESULT(addContentItem(RT_unknown, VT_Container, CODE_DCM_ImageLibrary));
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1600 - Row 1"));
+        /* store ID of root node for later use */
+        GOOD_RESULT(storeEntryInNodeList(IMAGE_LIBRARY, getNodeID()));
+    }
+    return result;
+}
+
+
 OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &tree,
                                                            DcmItem &dataset,
                                                            const OFBool check)
@@ -200,9 +391,9 @@ OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &t
         /* determine modality code from CID 29 */
         const CID29e_AcquisitionModality contextGroup;
         DSRCodedEntryValue modalityCode(contextGroup.mapModality(modality));
-        if (modalityCode.isValid())
+        if (modalityCode.isComplete())
         {
-            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_Modality));
+            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_Modality, check));
             CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(modalityCode, check));
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1602 - Row 1"));
         } else {
@@ -220,16 +411,16 @@ OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &t
         {
             /* alternatively, determine target region code from CID 4031 (using PS 3.16 Annex L) */
             regionCode = CID4031e_CommonAnatomicRegions::mapBodyPartExamined(bodyPartExamined);
-            if (!regionCode.isValid())
+            if (!regionCode.isComplete())
             {
                 /* report this as a debug message (avoid too many warnings) */
                 DCMSR_CMR_DEBUG("Cannot map Body Part Examined '" << bodyPartExamined << "' to a coded entry (no mapping to CID 4031 defined)");
             }
         }
     }
-    if (regionCode.isValid())
+    if (regionCode.isComplete())
     {
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_TargetRegion));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_TargetRegion, check));
         CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(regionCode, check));
         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1602 - Row 2"));
     }
@@ -239,9 +430,9 @@ OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &t
     {
         /* determine image laterality code from CID 244 */
         DSRCodedEntryValue lateralityCode(CID244e_Laterality::mapImageLaterality(imageLaterality));
-        if (lateralityCode.isValid())
+        if (lateralityCode.isComplete())
         {
-            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageLaterality));
+            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageLaterality, check));
             CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(lateralityCode, check));
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1602 - Row 3"));
         } else {
@@ -324,7 +515,7 @@ OFCondition TID1600_ImageLibrary::addProjectionRadiographyDescriptors(DSRDocumen
                     DSRCodedEntryValue modifierCode;
                     if (modifierCode.readSequenceItem(*OFstatic_cast(DcmItem *, object), DCM_ViewModifierCodeSequence).good())
                     {
-                        CHECK_RESULT(tree.addChildContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageViewModifier));
+                        CHECK_RESULT(tree.addChildContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageViewModifier, check));
                         CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(modifierCode, check));
                         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1603 - Row 2"));
                         tree.goUp();
@@ -391,7 +582,7 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
     OFCondition result = EC_Normal;
     /* TID 1605 (Image Library Entry Descriptors for CT) Row 1 */
     DcmSequenceOfItems *ctAcquisitionTypeSequence = NULL;
-    /* - tbd: only check in functional groups sequences? */
+    /* - tbd: only check in functional groups sequences? might use "dcmfg" for this purpose */
     if (dataset.findAndGetSequence(DCM_CTAcquisitionTypeSequence, ctAcquisitionTypeSequence, OFTrue /*searchIntoSub*/).good())
     {
         DcmItem *item = ctAcquisitionTypeSequence->getItem(0);
@@ -402,9 +593,9 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
             {
                 /* determine CT acquisition type code from CID 10013 */
                 DSRCodedEntryValue acquisitionTypeCode(CID10013e_CTAcquisitionType::mapAcquisitionType(acquisitionType));
-                if (acquisitionTypeCode.isValid())
+                if (acquisitionTypeCode.isComplete())
                 {
-                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_CTAcquisitionType));
+                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_CTAcquisitionType, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(acquisitionTypeCode, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1605 - Row 1"));
                 } else {
@@ -416,7 +607,7 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
     }
     /* TID 1605 (Image Library Entry Descriptors for CT) Row 2 */
     DcmSequenceOfItems *ctReconstructionSequence = NULL;
-    /* - tbd: only check in functional groups sequences? */
+    /* - tbd: only check in functional groups sequences? might use "dcmfg" for this purpose */
     if (dataset.findAndGetSequence(DCM_CTReconstructionSequence, ctReconstructionSequence, OFTrue /*searchIntoSub*/).good())
     {
         DcmItem *item = ctReconstructionSequence->getItem(0);
@@ -427,9 +618,9 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
             {
                 /* determine CT reconstruction algorithm code from CID 10033 */
                 DSRCodedEntryValue reconstructionAlgorithmCode(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm(reconstructionAlgorithm));
-                if (reconstructionAlgorithmCode.isValid())
+                if (reconstructionAlgorithmCode.isComplete())
                 {
-                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ReconstructionAlgorithm));
+                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ReconstructionAlgorithm, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(reconstructionAlgorithmCode, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1605 - Row 2"));
                 } else {
@@ -454,7 +645,7 @@ OFCondition TID1600_ImageLibrary::addMagneticResonanceDescriptors(DSRDocumentSub
     if ((getStringValueFromDataset(dataset, DCM_PulseSequenceName, sequenceName).good() && !sequenceName.empty()) ||
         (getStringValueFromDataset(dataset, DCM_SequenceName, sequenceName).good() && !sequenceName.empty()))
     {
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Text, DSRCodedEntryValue("110909", "DCM", "Pulse Sequence Name") /* wrong definition? CODE_DCM_PulseSequenceName */));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Text, DSRCodedEntryValue("110909", "DCM", "Pulse Sequence Name") /* wrong definition: will be fixed with CP-1578 */, check));
         CHECK_RESULT(tree.getCurrentContentItem().setStringValue(sequenceName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1606 - Row 1"));
     }
@@ -480,28 +671,28 @@ OFCondition TID1600_ImageLibrary::addPositronEmissionTomographyDescriptors(DSRDo
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 2 */
             CHECK_RESULT(addCodeContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalCodeSequence, CODE_SRT_RadiopharmaceuticalAgent, "TID 1607 - Row 2", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 3 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideHalfLife, 0 /*pos*/, CODE_SRT_HalfLifeOfRadiopharmaceutical, CODE_UCUM_S, "TID 1607 - Row 3", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideHalfLife, 0 /*pos*/, CODE_SRT_HalfLifeOfRadiopharmaceutical, CODE_UCUM_s, "TID 1607 - Row 3", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 4 */
             CHECK_RESULT(addStringContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalStartDateTime, 0 /*pos*/, VT_DateTime, CODE_DCM_RadiopharmaceuticalStartTime /*DateTime*/, "TID 1607 - Row 4", check));
-            /* TID 1607 (Image Library Entry Descriptors for PET) Row 4b */
-            CHECK_RESULT(addStringContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalStopDateTime, 0 /*pos*/, VT_DateTime, CODE_DCM_RadiopharmaceuticalStopTime /*DateTime*/, "TID 1607 - Row 4b", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 5 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalVolume, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalVolume, CODE_UCUM_Cm3, "TID 1607 - Row 5", check));
+            CHECK_RESULT(addStringContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalStopDateTime, 0 /*pos*/, VT_DateTime, CODE_DCM_RadiopharmaceuticalStopTime /*DateTime*/, "TID 1607 - Row 5", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 6 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideTotalDose, 0 /*pos*/, CODE_DCM_RadionuclideTotalDose, CODE_UCUM_Bq, "TID 1607 - Row 6", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalVolume, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalVolume, CODE_UCUM_cm3 /*might change with a CP*/, "TID 1607 - Row 6", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 7 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalSpecificActivity, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalSpecificActivity, CODE_UCUM_BqPerMol, "TID 1607 - Row 7", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideTotalDose, 0 /*pos*/, CODE_DCM_RadionuclideTotalDose, CODE_UCUM_Bq, "TID 1607 - Row 7", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 8 */
-            CHECK_RESULT(addCodeContentItemFromDataset(tree, *item, DCM_AdministrationRouteCodeSequence, CODE_SRT_RouteOfAdministration, "TID 1607 - Row 8", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalSpecificActivity, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalSpecificActivity, CODE_UCUM_BqPerMol, "TID 1607 - Row 8", check));
+            /* TID 1607 (Image Library Entry Descriptors for PET) Row 9 */
+            CHECK_RESULT(addCodeContentItemFromDataset(tree, *item, DCM_AdministrationRouteCodeSequence, CODE_SRT_RouteOfAdministration, "TID 1607 - Row 9", check));
         }
     }
-    /* TID 1607 (Image Library Entry Descriptors for PET) Row 9 to 10
+    /* TID 1607 (Image Library Entry Descriptors for PET) Row 10 to 11
      * - contained in TID 15101 (NM/PET Protocol Context), i.e. not available in the image
      */
-    /* TID 1607 (Image Library Entry Descriptors for PET) Row 11
-     * - tbc: where to get "Radionuclide Incubation Time
+    /* TID 1607 (Image Library Entry Descriptors for PET) Row 12
+     * - "Radionuclide Incubation Time" calculated from time of injection and time of starting the scan
      */
-    /* TID 1607 (Image Library Entry Descriptors for PET) Row 12 to 14
+    /* TID 1607 (Image Library Entry Descriptors for PET) Row 13 to 15
      * - contained in TID 15101 (NM/PET Protocol Context), i.e. available from Modality Worklist, or
      * - tbd: in TID 3470 (NM/PET Acquisition Context), i.e. from the Acquisition Context Module
      */
@@ -509,6 +700,150 @@ OFCondition TID1600_ImageLibrary::addPositronEmissionTomographyDescriptors(DSRDo
 }
 
 
+OFCondition TID1600_ImageLibrary::goAndCheckImageLibraryEntry(const DSRCodedEntryValue &modalityCode)
+{
+    OFCondition result = CMR_EC_NoImageLibraryEntry;
+    /* go to last image library entry (if any) */
+    if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
+    {
+        /* check whether TID 1602 (Image Library Entry Descriptors) Row 1 has correct value */
+        if ((gotoNamedChildNode(CODE_DCM_Modality, OFFalse /*searchIntoSub*/) > 0) &&
+            (getCurrentContentItem().getCodeValue() == modalityCode))
+        {
+            result = EC_Normal;
+        } else
+            result = CMR_EC_WrongImageLibraryEntryDescriptorModality;
+    }
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setStringContentItemFromValue(const E_ValueType valueType,
+                                                                const DSRCodedEntryValue &conceptName,
+                                                                const OFString &stringValue,
+                                                                const OFString &annotationText,
+                                                                const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        if (!stringValue.empty())
+        {
+            /* check whether content item is already present.
+             * (we assume that the content item we are searching for is a successor of the current one)
+             */
+            if (gotoNextNamedNode(conceptName, OFFalse /*searchIntoSub*/) == 0)
+            {
+                CHECK_RESULT(addContentItem(RT_hasAcqContext, valueType, conceptName, check));
+            } else {
+                /* make sure that the value type of the existing content item is correct */
+                if (getCurrentContentItem().getValueType() == valueType)
+                {
+                    DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") with \"" << stringValue << "\"");
+                } else {
+                    DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") ... wrong value type");
+                    result = SR_EC_InvalidContentItem;
+                }
+            }
+            CHECK_RESULT(getCurrentContentItem().setStringValue(stringValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+        } else
+            result = SR_EC_InvalidValue;
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setCodeContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                                              const DSRCodedEntryValue &codeValue,
+                                                              const OFString &annotationText,
+                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        if (codeValue.isComplete())
+        {
+            /* check whether content item is already present.
+             * (we assume that the content item we are searching for is a successor of the current one)
+             */
+            if (gotoNextNamedNode(conceptName, OFFalse /*searchIntoSub*/) == 0)
+            {
+                CHECK_RESULT(addContentItem(RT_hasAcqContext, VT_Code, conceptName, check));
+            } else {
+                /* make sure that the value type of the existing content item is correct */
+                if (getCurrentContentItem().getValueType() == VT_Code)
+                {
+                    DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") with " << codeValue);
+                } else {
+                    DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") ... wrong value type");
+                    result = SR_EC_InvalidContentItem;
+                }
+            }
+            CHECK_RESULT(getCurrentContentItem().setCodeValue(codeValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+        } else
+            result = SR_EC_InvalidValue;
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setNumericContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                                                 const DSRNumericMeasurementValue &numericValue,
+                                                                 const DSRCodedEntryValue &measurementUnit,
+                                                                 const OFString &annotationText,
+                                                                 const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        if (numericValue.isComplete())
+        {
+            /* check whether content item is already present.
+             * (we assume that the content item we are searching for is a successor of the current one)
+             */
+            if (gotoNextNamedNode(conceptName, OFFalse /*searchIntoSub*/) == 0)
+            {
+                CHECK_RESULT(addContentItem(RT_hasAcqContext, VT_Num, conceptName, check));
+            } else {
+                /* make sure that the value type of the existing content item is correct */
+                if (getCurrentContentItem().getValueType() == VT_Num)
+                {
+                    DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") with " << numericValue);
+                } else {
+                    DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") ... wrong value type");
+                    result = SR_EC_InvalidContentItem;
+                }
+            }
+            /* check whether measurement unit meets the template constraint */
+            if (result.good() && !measurementUnit.isEmpty() && (numericValue.getMeasurementUnit() != measurementUnit))
+            {
+                DCMSR_CMR_WARN("Wrong measurement unit for '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ")");
+                result = SR_EC_ValueSetConstraintViolated;
+            }
+            CHECK_RESULT(getCurrentContentItem().setNumericValue(numericValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+        } else
+            result = SR_EC_InvalidValue;
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
 // static helper functions
 
 OFCondition TID1600_ImageLibrary::addStringContentItemFromDataset(DSRDocumentSubTree &tree,
@@ -526,7 +861,7 @@ OFCondition TID1600_ImageLibrary::addStringContentItemFromDataset(DSRDocumentSub
     if (getStringValueFromDataset(dataset, tagKey, stringValue, pos).good() && !stringValue.empty())
     {
         /* create new content item, set concept name and value */
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, valueType, conceptName));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, valueType, conceptName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setStringValue(stringValue, check));
         if (!annotationText.empty())
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText(annotationText));
@@ -545,9 +880,9 @@ OFCondition TID1600_ImageLibrary::addCodeContentItemFromDataset(DSRDocumentSubTr
     OFCondition result = EC_Normal;
     DSRCodedEntryValue codedEntry;
     /* get coded entry from code sequence in dataset */
-    if (codedEntry.readSequence(dataset, tagKey, "3" /*type*/).good() && codedEntry.isValid())
+    if (codedEntry.readSequence(dataset, tagKey, "3" /*type*/).good() && codedEntry.isComplete())
     {
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, conceptName));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, conceptName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(codedEntry, check));
         if (!annotationText.empty())
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText(annotationText));
@@ -571,7 +906,7 @@ OFCondition TID1600_ImageLibrary::addNumericContentItemFromDataset(DSRDocumentSu
     if (getStringValueFromDataset(dataset, tagKey, numericValue, pos).good() && !numericValue.empty())
     {
         /* create new content item, set concept name and value */
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Num, conceptName));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Num, conceptName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setNumericValue(DSRNumericMeasurementValue(numericValue, measurementUnit), check));
         if (!annotationText.empty())
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText(annotationText));
index 12ca360144a0dfd30fd9b4a25a57580b9717d407..2e2e2bb7bd87a4afc3e5b71b6ed4820cf8d2928d 100644 (file)
@@ -1,5 +1,5 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(dcmsr dsrcitem dsrcodtn dsrcodvl dsrcomtn dsrcomvl dsrcontn dsrcsidl dsrdattn dsrdoc dsrdocst dsrdoctn dsrdoctr dsrdtitn dsrimgfr dsrimgse dsrimgtn dsrimgvl dsrnumtn dsrnumvl dsrpnmtn dsrrefin dsrreftn dsrscogr dsrsc3gr dsrscotn dsrsc3tn dsrscovl dsrsc3vl dsrsoprf dsrstrvl dsrtcodt dsrtcosp dsrtcotn dsrtcoto dsrtcovl dsrtextn dsrtimtn dsrtncsr dsrtree dsrtypes dsruidtn dsrwavch dsrwavtn dsrwavvl dsrxmlc dsrxmld dsriodcc dsrbascc dsrenhcc dsrcomcc dsrkeycc dsrmamcc dsrchecc dsrcolcc dsrprocc dsrxrdcc dsrspecc dsrmaccc dsrimpcc dsrc3dcc dsrrrdcc dsrctpl dsrrtpl dsrstpl dsrctxgr)
+DCMTK_ADD_LIBRARY(dcmsr dsrcitem dsrcodtn dsrcodvl dsrcomtn dsrcomvl dsrcontn dsrcsidl dsrdattn dsrdoc dsrdocst dsrdoctn dsrdoctr dsrdtitn dsrimgfr dsrimgse dsrimgtn dsrimgvl dsrnumtn dsrnumvl dsrpnmtn dsrposcn dsrrefin dsrreftn dsrscogr dsrsc3gr dsrscotn dsrsc3tn dsrscovl dsrsc3vl dsrsoprf dsrstrvl dsrtcodt dsrtcosp dsrtcotn dsrtcoto dsrtcovl dsrtextn dsrtimtn dsrtpltn dsrtree dsrtypes dsruidtn dsrwavch dsrwavtn dsrwavvl dsrxmlc dsrxmld dsriodcc dsrbascc dsrenhcc dsrcomcc dsrkeycc dsrmamcc dsrchecc dsrcolcc dsrprocc dsrxrdcc dsrspecc dsrmaccc dsrimpcc dsrc3dcc dsrrrdcc dsracqcc dsrctpl dsrrtpl dsrstpl dsrctxgr)
 
 DCMTK_TARGET_LINK_MODULES(dcmsr ofstd oflog dcmdata dcmimgle dcmimage)
 DCMTK_TARGET_LINK_LIBRARIES(dcmsr ${LIBXML_LIBS})
index bfacd51a9e5600e1f80e645901adb2f09275a592..f1e61dc3b15d8cdad0bccc131eff21ac6ef98144 100644 (file)
@@ -1,3 +1,119 @@
+dsracqcc.o: dsracqcc.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsracqcc.h ../include/dcmtk/dcmsr/dsriodcc.h \
+ ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmsr/dsdefine.h
 dsrbascc.o: dsrbascc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrbascc.h ../include/dcmtk/dcmsr/dsriodcc.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -41,6 +157,8 @@ dsrbascc.o: dsrbascc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -109,6 +227,7 @@ dsrbascc.o: dsrbascc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrc3dcc.o: dsrc3dcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -154,6 +273,8 @@ dsrc3dcc.o: dsrc3dcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -222,6 +343,7 @@ dsrc3dcc.o: dsrc3dcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrchecc.o: dsrchecc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -267,6 +389,8 @@ dsrchecc.o: dsrchecc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -335,6 +459,7 @@ dsrchecc.o: dsrchecc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrcitem.o: dsrcitem.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -379,6 +504,8 @@ dsrcitem.o: dsrcitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -447,11 +574,13 @@ dsrcitem.o: dsrcitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdoctn.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrscovl.h \
  ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -512,6 +641,8 @@ dsrcodtn.o: dsrcodtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -580,12 +711,14 @@ dsrcodtn.o: dsrcodtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrcodvl.o: dsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -630,6 +763,8 @@ dsrcodvl.o: dsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -698,6 +833,7 @@ dsrcodvl.o: dsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -745,6 +881,8 @@ dsrcolcc.o: dsrcolcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -813,6 +951,7 @@ dsrcolcc.o: dsrcolcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrcomcc.o: dsrcomcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -858,6 +997,8 @@ dsrcomcc.o: dsrcomcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -926,6 +1067,7 @@ dsrcomcc.o: dsrcomcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrcomtn.o: dsrcomtn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -970,6 +1112,8 @@ dsrcomtn.o: dsrcomtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1038,12 +1182,14 @@ dsrcomtn.o: dsrcomtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1089,6 +1235,8 @@ dsrcomvl.o: dsrcomvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1157,6 +1305,7 @@ dsrcomvl.o: dsrcomvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1202,6 +1351,8 @@ dsrcontn.o: dsrcontn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1270,12 +1421,14 @@ dsrcontn.o: dsrcontn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcontn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrcsidl.o: dsrcsidl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1320,6 +1473,8 @@ dsrcsidl.o: dsrcsidl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1388,6 +1543,7 @@ dsrcsidl.o: dsrcsidl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1433,6 +1589,8 @@ dsrctpl.o: dsrctpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1501,22 +1659,24 @@ dsrctpl.o: dsrctpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdocst.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdoctn.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
- ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
- ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
- ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
- ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
- ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
- ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
- ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h
+ ../include/dcmtk/dcmsr/dsrdocst.h ../include/dcmtk/dcmsr/dsrcitem.h \
+ ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrscovl.h \
+ ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
+ ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
+ ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
+ ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtcoto.h \
+ ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrimgvl.h \
+ ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrimgse.h \
+ ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dsrctxgr.o: dsrctxgr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -1560,6 +1720,8 @@ dsrctxgr.o: dsrctxgr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1628,6 +1790,7 @@ dsrctxgr.o: dsrctxgr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h
@@ -1673,6 +1836,8 @@ dsrdattn.o: dsrdattn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1741,12 +1906,14 @@ dsrdattn.o: dsrdattn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdattn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1794,6 +1961,8 @@ dsrdoc.o: dsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1862,11 +2031,12 @@ dsrdoc.o: dsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -1876,7 +2046,8 @@ dsrdoc.o: dsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h \
@@ -1926,6 +2097,8 @@ dsrdocst.o: dsrdocst.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1994,11 +2167,12 @@ dsrdocst.o: dsrdocst.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2008,8 +2182,12 @@ dsrdocst.o: dsrdocst.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrcontn.h \
- ../include/dcmtk/dcmsr/dsrreftn.h ../include/dcmtk/dcmsr/dsriodcc.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/dcmsr/dsrcontn.h ../include/dcmtk/dcmsr/dsrreftn.h \
+ ../include/dcmtk/dcmsr/dsrtpltn.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsriodcc.h
 dsrdoctn.o: dsrdoctn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -2053,6 +2231,8 @@ dsrdoctn.o: dsrdoctn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2121,10 +2301,12 @@ dsrdoctn.o: dsrdoctn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrdtitn.h ../include/dcmtk/dcmsr/dsrstrvl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h \
@@ -2172,6 +2354,8 @@ dsrdoctr.o: dsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2240,11 +2424,12 @@ dsrdoctr.o: dsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2254,9 +2439,11 @@ dsrdoctr.o: dsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrcontn.h \
- ../include/dcmtk/dcmsr/dsrreftn.h ../include/dcmtk/dcmsr/dsrxmld.h \
- ../include/dcmtk/dcmsr/dsrxmlc.h ../include/dcmtk/dcmsr/dsriodcc.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/dcmsr/dsrcontn.h ../include/dcmtk/dcmsr/dsrreftn.h \
+ ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h \
+ ../include/dcmtk/dcmsr/dsriodcc.h
 dsrdtitn.o: dsrdtitn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -2299,6 +2486,8 @@ dsrdtitn.o: dsrdtitn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2367,12 +2556,14 @@ dsrdtitn.o: dsrdtitn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdtitn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -2419,6 +2610,8 @@ dsrenhcc.o: dsrenhcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2487,6 +2680,7 @@ dsrenhcc.o: dsrenhcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrimgfr.o: dsrimgfr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2531,6 +2725,8 @@ dsrimgfr.o: dsrimgfr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2599,6 +2795,7 @@ dsrimgfr.o: dsrimgfr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2643,6 +2840,8 @@ dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2711,6 +2910,7 @@ dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrimgtn.o: dsrimgtn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2755,6 +2955,8 @@ dsrimgtn.o: dsrimgtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2823,12 +3025,14 @@ dsrimgtn.o: dsrimgtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrimgtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -2876,6 +3080,8 @@ dsrimgvl.o: dsrimgvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2944,6 +3150,7 @@ dsrimgvl.o: dsrimgvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -3014,6 +3221,8 @@ dsrimpcc.o: dsrimpcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3082,6 +3291,7 @@ dsrimpcc.o: dsrimpcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsriodcc.o: dsriodcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3126,6 +3336,8 @@ dsriodcc.o: dsriodcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3194,6 +3406,7 @@ dsriodcc.o: dsriodcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrkeycc.o: dsrkeycc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3239,6 +3452,8 @@ dsrkeycc.o: dsrkeycc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3307,6 +3522,7 @@ dsrkeycc.o: dsrkeycc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrmaccc.o: dsrmaccc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3352,6 +3568,8 @@ dsrmaccc.o: dsrmaccc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3420,6 +3638,7 @@ dsrmaccc.o: dsrmaccc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrmamcc.o: dsrmamcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3465,6 +3684,8 @@ dsrmamcc.o: dsrmamcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3533,6 +3754,7 @@ dsrmamcc.o: dsrmamcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrnumtn.o: dsrnumtn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3577,6 +3799,8 @@ dsrnumtn.o: dsrnumtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3645,12 +3869,14 @@ dsrnumtn.o: dsrnumtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrnumtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -3696,6 +3922,8 @@ dsrnumvl.o: dsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3764,6 +3992,7 @@ dsrnumvl.o: dsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h \
@@ -3811,6 +4040,8 @@ dsrpnmtn.o: dsrpnmtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3879,15 +4110,132 @@ dsrpnmtn.o: dsrpnmtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrpnmtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
+dsrposcn.o: dsrposcn.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofaptr.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
 dsrprocc.o: dsrprocc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrprocc.h ../include/dcmtk/dcmsr/dsriodcc.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -3931,6 +4279,8 @@ dsrprocc.o: dsrprocc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3999,6 +4349,7 @@ dsrprocc.o: dsrprocc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrrefin.o: dsrrefin.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4043,6 +4394,8 @@ dsrrefin.o: dsrrefin.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4111,6 +4464,7 @@ dsrrefin.o: dsrrefin.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -4157,6 +4511,8 @@ dsrreftn.o: dsrreftn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4225,12 +4581,14 @@ dsrreftn.o: dsrreftn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrreftn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrrrdcc.o: dsrrrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4276,6 +4634,8 @@ dsrrrdcc.o: dsrrrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4344,6 +4704,7 @@ dsrrrdcc.o: dsrrrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4390,6 +4751,8 @@ dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4458,11 +4821,12 @@ dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -4472,7 +4836,8 @@ dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
  ../include/dcmtk/dcmsr/dsrstpl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4517,6 +4882,8 @@ dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4585,6 +4952,7 @@ dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrsc3tn.o: dsrsc3tn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4629,6 +4997,8 @@ dsrsc3tn.o: dsrsc3tn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4697,12 +5067,14 @@ dsrsc3tn.o: dsrsc3tn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrsc3tn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -4749,6 +5121,8 @@ dsrsc3vl.o: dsrsc3vl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4817,6 +5191,7 @@ dsrsc3vl.o: dsrsc3vl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -4863,6 +5238,8 @@ dsrscogr.o: dsrscogr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4931,6 +5308,7 @@ dsrscogr.o: dsrscogr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrscotn.o: dsrscotn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4975,6 +5353,8 @@ dsrscotn.o: dsrscotn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5043,12 +5423,14 @@ dsrscotn.o: dsrscotn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrscotn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -5095,6 +5477,8 @@ dsrscovl.o: dsrscovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5163,6 +5547,7 @@ dsrscovl.o: dsrscovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrscogr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -5182,6 +5567,8 @@ dsrsoprf.o: dsrsoprf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5278,6 +5665,7 @@ dsrsoprf.o: dsrsoprf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -5325,6 +5713,8 @@ dsrspecc.o: dsrspecc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5393,6 +5783,7 @@ dsrspecc.o: dsrspecc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -5439,6 +5830,8 @@ dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5507,11 +5900,12 @@ dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -5521,7 +5915,8 @@ dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h
 dsrstrvl.o: dsrstrvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -5564,6 +5959,8 @@ dsrstrvl.o: dsrstrvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5632,6 +6029,7 @@ dsrstrvl.o: dsrstrvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -5677,6 +6075,8 @@ dsrtcodt.o: dsrtcodt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5745,6 +6145,7 @@ dsrtcodt.o: dsrtcodt.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -5789,6 +6190,8 @@ dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5857,6 +6260,7 @@ dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrtcotn.o: dsrtcotn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -5901,6 +6305,8 @@ dsrtcotn.o: dsrtcotn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5969,12 +6375,14 @@ dsrtcotn.o: dsrtcotn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtcotn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrtcosp.h \
@@ -6022,6 +6430,8 @@ dsrtcoto.o: dsrtcoto.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6090,6 +6500,7 @@ dsrtcoto.o: dsrtcoto.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrtcovl.o: dsrtcovl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -6134,6 +6545,8 @@ dsrtcovl.o: dsrtcovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6202,6 +6615,7 @@ dsrtcovl.o: dsrtcovl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtcodt.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrtcosp.h \
@@ -6249,6 +6663,8 @@ dsrtextn.o: dsrtextn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6317,12 +6733,14 @@ dsrtextn.o: dsrtextn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtextn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -6368,6 +6786,8 @@ dsrtimtn.o: dsrtimtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6436,37 +6856,36 @@ dsrtimtn.o: dsrtimtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtimtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
-dsrtncsr.o: dsrtncsr.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/dsrtncsr.h \
- ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/oftypes.h \
- ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofcast.h \
- ../../ofstd/include/dcmtk/ofstd/ofexport.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtypes.h \
+dsrtpltn.o: dsrtpltn.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../oflog/include/dcmtk/oflog/config/defines.h \
  ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
  ../../oflog/include/dcmtk/oflog/loglevel.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../oflog/include/dcmtk/oflog/tchar.h \
  ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
@@ -6483,12 +6902,15 @@ dsrtncsr.o: dsrtncsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6557,8 +6979,27 @@ dsrtncsr.o: dsrtncsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmsr/dsrtnant.h
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtpltn.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
+ ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/dsrstpl.h ../include/dcmtk/dcmsr/dsrdoctr.h \
+ ../include/dcmtk/dcmsr/dsrdocst.h ../include/dcmtk/dcmsr/dsrcitem.h \
+ ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrscovl.h \
+ ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
+ ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
+ ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
+ ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtcoto.h \
+ ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrimgvl.h \
+ ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrimgse.h \
+ ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrtree.o: dsrtree.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -6601,6 +7042,8 @@ dsrtree.o: dsrtree.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6669,10 +7112,11 @@ dsrtree.o: dsrtree.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h
 dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -6715,6 +7159,8 @@ dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6783,12 +7229,14 @@ dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtextn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrcodtn.h \
  ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/dsrnumvl.h \
@@ -6813,7 +7261,7 @@ dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrprocc.h ../include/dcmtk/dcmsr/dsrxrdcc.h \
  ../include/dcmtk/dcmsr/dsrspecc.h ../include/dcmtk/dcmsr/dsrmaccc.h \
  ../include/dcmtk/dcmsr/dsrimpcc.h ../include/dcmtk/dcmsr/dsrc3dcc.h \
- ../include/dcmtk/dcmsr/dsrrrdcc.h
+ ../include/dcmtk/dcmsr/dsrrrdcc.h ../include/dcmtk/dcmsr/dsracqcc.h
 dsruidtn.o: dsruidtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -6856,6 +7304,8 @@ dsruidtn.o: dsruidtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6924,12 +7374,14 @@ dsruidtn.o: dsruidtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsruidtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -6975,6 +7427,8 @@ dsrwavch.o: dsrwavch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7043,6 +7497,7 @@ dsrwavch.o: dsrwavch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -7088,6 +7543,8 @@ dsrwavtn.o: dsrwavtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7156,12 +7613,14 @@ dsrwavtn.o: dsrwavtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrwavtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -7208,6 +7667,8 @@ dsrwavvl.o: dsrwavvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7276,6 +7737,7 @@ dsrwavvl.o: dsrwavvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -7332,6 +7794,8 @@ dsrxmld.o: dsrxmld.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7400,6 +7864,7 @@ dsrxmld.o: dsrxmld.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrxrdcc.o: dsrxrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -7445,6 +7910,8 @@ dsrxrdcc.o: dsrxrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7513,5 +7980,6 @@ dsrxrdcc.o: dsrxrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h
index 3ba7139997770769e7dbdd0a276069d3c608524a..f62d6a1816e449d2d792d76caebe2bd193943bd3 100644 (file)
@@ -22,18 +22,18 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
        -I$(dcmimgledir)/include -I$(dcmimagedir)/include
 LOCALDEFS =
 
-objs = dsrdoc.o dsrtree.o dsrtncsr.o dsrdoctn.o dsrdoctr.o dsrdocst.o \
+objs = dsrdoc.o dsrposcn.o dsrtree.o dsrdoctn.o dsrdoctr.o dsrdocst.o \
        dsrctpl.o dsrrtpl.o dsrstpl.o dsrctxgr.o dsrcitem.o dsrtypes.o \
        dsrimgfr.o dsrimgse.o dsrscogr.o dsrsc3gr.o dsrtcodt.o dsrtcosp.o \
        dsrtcoto.o dsrwavch.o dsrstrvl.o dsrcodvl.o dsrnumvl.o dsrscovl.o \
        dsrsc3vl.o dsrtcovl.o dsrcomvl.o dsrimgvl.o dsrwavvl.o dsrtextn.o \
        dsrcodtn.o dsrnumtn.o dsrdtitn.o dsrdattn.o dsrtimtn.o dsruidtn.o \
        dsrpnmtn.o dsrscotn.o dsrsc3tn.o dsrtcotn.o  dsrcomtn.o dsrimgtn.o \
-       dsrwavtn.o dsrcontn.o dsrreftn.o dsrsoprf.o dsrrefin.o dsrcsidl.o \
-       dsrxmlc.o dsrxmld.o \
+       dsrwavtn.o dsrcontn.o dsrreftn.o dsrtpltn.o \
+       dsrsoprf.o dsrrefin.o dsrcsidl.o dsrxmlc.o dsrxmld.o \
        dsriodcc.o dsrbascc.o dsrenhcc.o dsrcomcc.o dsrkeycc.o dsrmamcc.o \
        dsrchecc.o dsrcolcc.o dsrprocc.o dsrxrdcc.o dsrspecc.o dsrmaccc.o \
-       dsrimpcc.o dsrc3dcc.o dsrrrdcc.o
+       dsrimpcc.o dsrc3dcc.o dsrrrdcc.o dsracqcc.o
 library = libdcmsr.$(LIBEXT)
 
 
diff --git a/dcmsr/libsrc/dsracqcc.cc b/dcmsr/libsrc/dsracqcc.cc
new file mode 100644 (file)
index 0000000..ecd215f
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ *
+ *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmsr
+ *
+ *  Author:  Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRAcquisitionContextConstraintChecker
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsracqcc.h"
+
+
+DSRAcquisitionContextConstraintChecker::DSRAcquisitionContextConstraintChecker()
+  : DSRIODConstraintChecker()
+{
+}
+
+
+DSRAcquisitionContextConstraintChecker::~DSRAcquisitionContextConstraintChecker()
+{
+}
+
+
+OFBool DSRAcquisitionContextConstraintChecker::isByReferenceAllowed() const
+{
+    return OFFalse;
+}
+
+
+OFBool DSRAcquisitionContextConstraintChecker::isTemplateSupportRequired() const
+{
+    return OFFalse;
+}
+
+
+OFCondition DSRAcquisitionContextConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                  OFString &mappingResource) const
+{
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
+}
+
+
+DSRTypes::E_DocumentType DSRAcquisitionContextConstraintChecker::getDocumentType() const
+{
+    return DT_AcquisitionContextSR;
+}
+
+
+OFBool DSRAcquisitionContextConstraintChecker::checkContentRelationship(const E_ValueType sourceValueType,
+                                                                        const E_RelationshipType relationshipType,
+                                                                        const E_ValueType targetValueType,
+                                                                        const OFBool byReference) const
+{
+    /* the following code implements the constraints of table A.35.x-2 in DICOM PS3.3 (Supplement 187) */
+    OFBool result = OFFalse;
+    /* by-reference relationships not allowed at all */
+    if (!byReference)
+    {
+        /* row 1 of the table */
+        if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
+        {
+            result = (targetValueType == VT_Code) || (targetValueType == VT_Container) || (targetValueType == VT_DateTime) ||
+                     (targetValueType == VT_Num)  || (targetValueType == VT_PName)     || (targetValueType == VT_Text)     ||
+                     (targetValueType == VT_Time) || (targetValueType == VT_UIDRef);
+        }
+        /* row 2 of the table */
+        else if ((relationshipType == RT_hasObsContext) && ((sourceValueType == VT_Container)))
+        {
+            result = (targetValueType == VT_Code) || (targetValueType == VT_Date)  || (targetValueType == VT_DateTime) ||
+                     (targetValueType == VT_Num)  || (targetValueType == VT_PName) || (targetValueType == VT_Text)     ||
+                     (targetValueType == VT_Time) || (targetValueType == VT_UIDRef);
+        }
+        /* row 3 of the table */
+        else if ((relationshipType == RT_hasObsContext) && (sourceValueType == VT_Code))
+        {
+            result = (targetValueType == VT_Code);
+        }
+        /* row 4 of the table */
+        else if (relationshipType == RT_hasConceptMod)
+        {
+            result = (targetValueType == VT_Code) || (targetValueType == VT_Text);
+        }
+        /* row 5 of the table */
+        else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_Code))
+        {
+            result = (targetValueType == VT_Code)     || (targetValueType == VT_DateTime) || (targetValueType == VT_Num) ||
+                     (targetValueType == VT_SCoord3D) || (targetValueType == VT_Text);
+        }
+    }
+    return result;
+}
index ed0d1c737245325bab5c9c285816434ed8395007..cc2db99c70cf2d9fcc52b82462dc2e212d437113 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRBasicTextSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRBasicTextSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRBasicTextSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                           OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -107,7 +110,7 @@ OFBool DSRBasicTextSRConstraintChecker::checkContentRelationship(const E_ValueTy
                      (targetValueType == VT_PName) || (targetValueType == VT_Image) || (targetValueType == VT_Waveform) ||
                      (targetValueType == VT_Composite);
         }
-        /* row 6 of the table - introduced with CP 1076 */
+        /* row 6 of the table - introduced with CP-1076 */
         else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
         {
             result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
index 967cd622546732b60df1b394a701db02143d7ad3..a48709e91e2d2495b9533a5be4bd9d216d60d077 100644 (file)
@@ -49,9 +49,12 @@ OFBool DSRComprehensive3DSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRComprehensive3DSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRComprehensive3DSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                 OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -66,7 +69,7 @@ OFBool DSRComprehensive3DSRConstraintChecker::checkContentRelationship(const E_V
                                                                        const E_ValueType targetValueType,
                                                                        const OFBool byReference) const
 {
-    /* the following code implements the contraints of table A.35.X-2 in DICOM PS3.3 (Supplement 162) */
+    /* the following code implements the constraints of table A.35.13-2 in DICOM PS3.3 */
     OFBool result = OFFalse;
     /* row 1 of the table */
     if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
index b348fcfb435d3b4c5a39eed270fef27dc2d5697a..5a095cb3647eb547c4985a609987ce5e88ed7e6e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRChestCadSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRChestCadSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRChestCadSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                          OFString &mappingResource) const
 {
-    return "4100";
+    templateIdentifier = "4100";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
index b0bc4889b09ca46016c392f1a985ad2bdeb1537b..bb0171af2110e4cd2a0e9a5f28ec7fd63b40d4f0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -188,6 +188,15 @@ OFBool DSRCodedEntryValue::operator==(const DSRCodedEntryValue &codedEntryValue)
 }
 
 
+OFBool DSRCodedEntryValue::operator!=(const DSRCodedEntryValue &codedEntryValue) const
+{
+    /* Code Meaning is not used for comparing the two codes */
+    return (CodeValue != codedEntryValue.CodeValue) ||
+           (CodingSchemeDesignator != codedEntryValue.CodingSchemeDesignator) ||
+           (CodingSchemeVersion != codedEntryValue.CodingSchemeVersion);
+}
+
+
 OFBool DSRCodedEntryValue::operator==(const DSRBasicCodedEntry &basicCodedEntry) const
 {
     /* Code Meaning is not used for comparing the two codes */
@@ -197,6 +206,15 @@ OFBool DSRCodedEntryValue::operator==(const DSRBasicCodedEntry &basicCodedEntry)
 }
 
 
+OFBool DSRCodedEntryValue::operator!=(const DSRBasicCodedEntry &basicCodedEntry) const
+{
+    /* Code Meaning is not used for comparing the two codes */
+    return (CodeValue != basicCodedEntry.CodeValue) ||
+           (CodingSchemeDesignator != basicCodedEntry.CodingSchemeDesignator) ||
+           (CodingSchemeVersion != basicCodedEntry.CodingSchemeVersion);
+}
+
+
 void DSRCodedEntryValue::clear()
 {
     CodeValueType = DSRTypes::CVT_auto;
@@ -225,6 +243,12 @@ OFBool DSRCodedEntryValue::isEmpty() const
 }
 
 
+OFBool DSRCodedEntryValue::isComplete() const
+{
+    return !CodeValue.empty() && !CodingSchemeDesignator.empty() && !CodeMeaning.empty();
+}
+
+
 void DSRCodedEntryValue::print(STD_NAMESPACE ostream &stream,
                                const OFBool printCodeValue,
                                const size_t flags) const
@@ -284,8 +308,8 @@ OFCondition DSRCodedEntryValue::readItem(DcmItem &dataset,
             /* check for a common error: Context Group Identifier includes "CID" prefix */
             if ((ContextIdentifier.find_first_not_of("0123456789") != OFString_npos) || (ContextIdentifier.at(0) == '0'))
             {
-                DCMSR_DEBUG("Reading invalid ContextIdentifier (" << ContextIdentifier << ")");
-                DCMSR_WARN("ContextIdentifier shall be a string of digits without leading zeros");
+                DCMSR_DEBUG("Reading invalid Context Identifier (" << ContextIdentifier << ")");
+                DCMSR_WARN("Context Identifier shall be a string of digits without leading zeros");
             }
             DSRTypes::getAndCheckStringValueFromDataset(dataset, DCM_MappingResource, MappingResource, "1", "1" /* was 1C */, moduleName);
             DSRTypes::getAndCheckStringValueFromDataset(dataset, DCM_ContextGroupVersion, ContextGroupVersion, "1", "1" /* was 1C */, moduleName);
@@ -769,3 +793,13 @@ DSRTypes::E_CodeValueType DSRCodedEntryValue::determineCodeValueType(const OFStr
         codeValueType = DSRTypes::CVT_Short;
     return codeValueType;
 }
+
+
+// output operators
+
+STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                  const DSRCodedEntryValue& codedEntryValue)
+{
+    codedEntryValue.print(stream, OFTrue /*printCodeValue*/, 0 /*flags*/);
+    return stream;
+}
index cd663034ca3815d922075a5dadb79513ea861435..c45fbe67f3c5f982ad8aa3c7a09409e8a0383ccd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRColonCadSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRColonCadSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRColonCadSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                          OFString &mappingResource) const
 {
-    return "4120";
+    templateIdentifier = "4120";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
index cb5614b491c30ba21e3570c4628bb47dc2786a48..cd04e1d9b1e6ff8aeaf5381a158211c9a22752f3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRComprehensiveSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRComprehensiveSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRComprehensiveSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                               OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -66,7 +69,7 @@ OFBool DSRComprehensiveSRConstraintChecker::checkContentRelationship(const E_Val
                                                                      const E_ValueType targetValueType,
                                                                      const OFBool byReference) const
 {
-    /* the following code implements the contraints of table A.35.3-2 in DICOM PS3.3 */
+    /* the following code implements the constraints of table A.35.3-2 in DICOM PS3.3 */
     OFBool result = OFFalse;
     /* row 1 of the table */
     if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
@@ -108,7 +111,7 @@ OFBool DSRComprehensiveSRConstraintChecker::checkContentRelationship(const E_Val
                  (targetValueType == VT_Waveform) || (targetValueType == VT_Composite) || (targetValueType == VT_SCoord) ||
                  (targetValueType == VT_TCoord)   || (targetValueType == VT_Container);
     }
-    /* row 6 of the table - introduced with CP 1076 */
+    /* row 6 of the table - introduced with CP-1076 */
     else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
     {
         result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
index d268d6bcf789db5f502a57db9fa7bc73c3be4497..e03a84f3a2032229b52c48ab1eb6fc8fe3dddc8c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -87,6 +87,12 @@ OFBool DSRCompositeReferenceValue::isEmpty() const
 }
 
 
+OFBool DSRCompositeReferenceValue::isComplete() const
+{
+    return !SOPClassUID.empty() && !SOPInstanceUID.empty();
+}
+
+
 OFCondition DSRCompositeReferenceValue::print(STD_NAMESPACE ostream &stream,
                                               const size_t flags) const
 {
@@ -232,6 +238,13 @@ OFCondition DSRCompositeReferenceValue::renderHTML(STD_NAMESPACE ostream &docStr
 }
 
 
+const OFString DSRCompositeReferenceValue::getSOPClassName(const OFString &defaultName) const
+{
+    /* lookup name associated with the SOP class UID */
+    return SOPClassUID.empty() ? "" : dcmFindNameOfUID(SOPClassUID.c_str(), defaultName.c_str());
+}
+
+
 OFCondition DSRCompositeReferenceValue::getValue(DSRCompositeReferenceValue &referenceValue) const
 {
     referenceValue = *this;
index 1d6ee71e9615b42137a7a2189abb1092ae9247cd..8f6f6630e48ba1b1f73df1889994f99a72bd010d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2015, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -133,7 +133,7 @@ OFCondition DSRCodingSchemeIdentificationList::write(DcmItem &dataset) const
                     putStringValueToDataset(*ditem, DCM_CodingSchemeExternalID, item->CodingSchemeExternalID, OFFalse /*allowEmpty*/);
                 else if (!item->CodingSchemeExternalID.empty())
                 {
-                    DCMSR_WARN("Both CodingSchemeUID and CodingSchemeExternalID present for \""
+                    DCMSR_WARN("Both Coding Scheme UID and Coding Scheme External ID present for \""
                         << item->CodingSchemeDesignator << "\", the latter will be ignored");
                 }
                 putStringValueToDataset(*ditem, DCM_CodingSchemeName, item->CodingSchemeName, OFFalse /*allowEmpty*/);
@@ -251,8 +251,8 @@ OFCondition DSRCodingSchemeIdentificationList::addItem(const OFString &codingSch
                 result = EC_MemoryExhausted;
             }
         } else {
-            DCMSR_WARN("CodingSchemeDesignator \"" << codingSchemeDesignator
-                << "\" already exists in CodingSchemeIdentificationSequence ... overwriting");
+            DCMSR_WARN("Coding Scheme Designator \"" << codingSchemeDesignator
+                << "\" already exists in Coding Scheme Identification Sequence ... overwriting");
             /* gotoItem() was successful, set item pointer */
             item = *Iterator;
         }
index bc2aa90e71f43143a24dda68f04ae3968d1a82b3..95653f2460bc64d320d39571b72d557c49856f65 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -45,6 +45,12 @@ DSRTemplateCommon::~DSRTemplateCommon()
 }
 
 
+void DSRTemplateCommon::clear()
+{
+    clearEntriesInNodeList();
+}
+
+
 OFBool DSRTemplateCommon::hasTemplateIdentification() const
 {
     /* mapping resource UID is optional, so do not check it */
@@ -77,11 +83,40 @@ OFBool DSRTemplateCommon::isTemplateIdentificationValid(const OFBool check) cons
 }
 
 
+OFBool DSRTemplateCommon::compareTemplateIdentication(const OFString &templateIdentifier,
+                                                      const OFString &mappingResource,
+                                                      const OFString &mappingResourceUID) const
+{
+    OFBool result = (TemplateIdentifier == templateIdentifier) && (MappingResource == mappingResource);
+    /* mapping resource UID is optional, so only check it if present */
+    if (result && !MappingResourceUID.empty() && !mappingResourceUID.empty())
+        result = (MappingResourceUID == mappingResourceUID);
+    return result;
+}
+
+
 // protected methods
 
-void DSRTemplateCommon::reserveEntriesInNodeList(const size_t count)
+void DSRTemplateCommon::clearEntriesInNodeList()
 {
-    NodeList.reserve(count);
+    /* set all entries to 0 */
+    for (size_t i = 0; i < NodeList.size(); ++i)
+        NodeList[i] = 0;
+}
+
+
+void DSRTemplateCommon::reserveEntriesInNodeList(const size_t count,
+                                                 const OFBool initialize)
+{
+    /* check whether the entries should be initialized... */
+    if (initialize)
+    {
+        NodeList.resize(count);
+        clearEntriesInNodeList();
+    } else {
+        /* ... or only reserved (not created and initialized) */
+        NodeList.reserve(count);
+    }
 }
 
 
@@ -105,6 +140,22 @@ size_t DSRTemplateCommon::getEntryFromNodeList(const size_t pos) const
 }
 
 
+size_t DSRTemplateCommon::gotoEntryFromNodeList(DSRDocumentTreeNodeCursor &cursor,
+                                                const size_t pos) const
+{
+    size_t nodeID = 0;
+    /* make sure that cursor is valid and list entry exists */
+    if ((cursor.isValid()) && (pos < NodeList.size()))
+    {
+        nodeID = NodeList[pos];
+        /* check whether current node is already the right one */
+        if (cursor.getNodeID() != nodeID)
+            nodeID = cursor.gotoNode(nodeID);
+    }
+    return nodeID;
+}
+
+
 size_t DSRTemplateCommon::gotoEntryFromNodeList(DSRDocumentSubTree *tree,
                                                 const size_t pos)
 {
@@ -122,14 +173,15 @@ size_t DSRTemplateCommon::gotoEntryFromNodeList(DSRDocumentSubTree *tree,
 
 
 size_t DSRTemplateCommon::gotoLastEntryFromNodeList(DSRDocumentSubTree *tree,
-                                                    const size_t lastPos)
+                                                    const size_t lastPos,
+                                                    const size_t firstPos)
 {
     size_t nodeID = 0;
     /* make sure that tree is valid and list entry exists */
-    if ((tree != NULL) && (lastPos < NodeList.size()))
+    if ((tree != NULL) && (firstPos <= lastPos) && (lastPos < NodeList.size()))
     {
         size_t pos = lastPos + 1;
-        while ((pos > 0) && (nodeID == 0))
+        while ((pos > firstPos) && (nodeID == 0))
             nodeID = NodeList[--pos];
         /* check whether current node is already the right one */
         if (tree->getNodeID() != nodeID)
index 4f6203f839ff3613bb9b4ba5b8a06ef31e5b5554..f9585b1dd41318c876820a774d3ecc164d7a6a83 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -87,6 +87,12 @@ OFCondition DSRContextGroup::findCodedEntry(const DSRCodedEntryValue &codedEntry
 }
 
 
+OFBool DSRContextGroup::hasExtendedCodedEntries() const
+{
+    return !ExtendedCodes.empty();
+}
+
+
 OFCondition DSRContextGroup::addCodedEntry(const DSRCodedEntryValue &codedEntryValue)
 {
     OFCondition result = EC_Normal;
index 6c425c22843779a85919c90a50baa3be8f590dd0..2ac6597df062b6edd1a49bf07f408b7c13402252 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -440,9 +440,7 @@ OFCondition DSRDocument::read(DcmItem &dataset,
         getElementFromDataset(dataset, SOPClassUID);   /* already checked */
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SpecificCharacterSet, "1-n", "1C", "SOPCommonModule");
-        if (SpecificCharacterSet.getVM() > 1)
-            DCMSR_WARN("Multiple values for Specific Character Set are not supported");
-        getStringValueFromElement(SpecificCharacterSet, tmpString);
+        getStringValueFromElement(SpecificCharacterSet, tmpString, -1 /* all components */);
         /* currently, the VR checker in 'dcmdata' only supports ASCII and Latin-1 */
         if (!tmpString.empty() && (tmpString != "ISO_IR 6") && (tmpString != "ISO_IR 100"))
             DCMSR_WARN("The VR checker does not support this Specific Character Set: " << tmpString);
@@ -515,7 +513,7 @@ OFCondition DSRDocument::read(DcmItem &dataset,
             PredecessorDocuments.read(dataset, flags);
             /* need to check sequence in two steps (avoids additional getAndCheck... method) */
             searchCond = getElementFromDataset(dataset, PerformedProcedureCode);
-            checkElementValue(PerformedProcedureCode, "1", "2", searchCond, "SRDocumentGeneralModule");
+            checkElementValue(PerformedProcedureCode, "1-n", "2", searchCond, "SRDocumentGeneralModule");
             PertinentOtherEvidence.read(dataset, flags);
             ReferencedInstances.read(dataset, flags);
         }
@@ -544,7 +542,7 @@ OFCondition DSRDocument::read(DcmItem &dataset,
             if (CompletionFlagEnum == CF_invalid)
                 printUnknownValueWarningMessage("CompletionFlag", tmpString.c_str());
             else if ((CompletionFlagEnum == CF_Partial) && (documentType == DT_XRayRadiationDoseSR))
-                DCMSR_WARN("Invalid value for CompletionFlag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
+                DCMSR_WARN("Invalid value for Completion Flag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
             /* get and check VerificationFlag / VerifyingObserverSequence */
             VerificationFlagEnum = enumeratedValueToVerificationFlag(getStringValueFromElement(VerificationFlag, tmpString));
             if (VerificationFlagEnum == VF_invalid)
@@ -552,7 +550,8 @@ OFCondition DSRDocument::read(DcmItem &dataset,
             else if (VerificationFlagEnum == VF_Verified)
                 checkElementValue(VerifyingObserver, "1-n", "1", obsSearchCond, "SRDocumentGeneralModule");
         }
-        SpecificCharacterSetEnum = definedTermToCharacterSet(getStringValueFromElement(SpecificCharacterSet, tmpString));
+        getStringValueFromElement(SpecificCharacterSet, tmpString, -1 /* all components */);
+        SpecificCharacterSetEnum = definedTermToCharacterSet(tmpString);
         /* check SpecificCharacterSet */
         if ((SpecificCharacterSetEnum == CS_invalid) && !tmpString.empty())
             printUnknownValueWarningMessage("SpecificCharacterSet", tmpString.c_str());
@@ -606,7 +605,7 @@ OFCondition DSRDocument::write(DcmItem &dataset,
 
         /* checking particular values */
         if ((CompletionFlagEnum == CF_Partial) && (getDocumentType() == DT_XRayRadiationDoseSR))
-            DCMSR_WARN("Invalid value for CompletionFlag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
+            DCMSR_WARN("Invalid value for Completion Flag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
 
         /* write general document attributes */
 
@@ -695,7 +694,7 @@ OFCondition DSRDocument::write(DcmItem &dataset,
                 PredecessorDocuments.write(dataset);    /* optional */
             /* always write empty sequence since not yet fully supported */
             PerformedProcedureCode.clear();
-            addElementToDataset(result, dataset, new DcmSequenceOfItems(PerformedProcedureCode), "1", "2", "SRDocumentGeneralModule");
+            addElementToDataset(result, dataset, new DcmSequenceOfItems(PerformedProcedureCode), "1-n", "2", "SRDocumentGeneralModule");
             if (result.good())
                 result = PertinentOtherEvidence.write(dataset);
             if (result.good())
@@ -1192,13 +1191,10 @@ OFCondition DSRDocument::writeXML(STD_NAMESPACE ostream &stream,
         stream << "<?xml version=\"1.0\"";
         /* optional character set */
         tmpString = characterSetToXMLName(SpecificCharacterSetEnum);
-        if (!tmpString.empty())
-        {
-            if (tmpString != "?")
-                stream << " encoding=\"" << tmpString << "\"";
-            else
-                DCMSR_WARN("Cannot map Specific Character Set to equivalent XML encoding");
-        }
+        if (!tmpString.empty() && (tmpString != "?"))
+            stream << " encoding=\"" << tmpString << "\"";
+        else if (!SpecificCharacterSet.isEmpty())
+            DCMSR_WARN("Cannot map Specific Character Set to equivalent XML encoding");
         stream << "?>" << OFendl;
 
         stream << "<report";
@@ -1901,10 +1897,30 @@ OFCondition DSRDocument::setTree(const DSRDocumentTree &tree)
 }
 
 
-OFCondition DSRDocument::setTreeFromRootTemplate(DSRRootTemplate &rootTemplate)
+OFCondition DSRDocument::setTreeFromRootTemplate(DSRRootTemplate &rootTemplate,
+                                                 const OFBool expandTree)
 {
-    /* call the functions doing the real work */
-    return setTree(rootTemplate.getTree());
+    OFCondition result = EC_Normal;
+    /* check whether to expand the included templates (if any) */
+    if (expandTree)
+    {
+        DSRDocumentSubTree *tree = NULL;
+        /* expand tree managed by the template and replace the currently stored tree */
+        result = rootTemplate.getTree().createExpandedSubTree(tree);
+        if (result.good())
+            result = DocumentTree.changeDocumentType(rootTemplate.getDocumentType(), OFTrue /*deleteTree*/);
+        if (result.good())
+            result = DocumentTree.insertSubTree(tree, AM_belowCurrent, RT_unknown, OFFalse /*deleteIfFail*/);
+        /* update IOD-specific DICOM attributes */
+        updateAttributes(OFFalse /*updateAll*/);
+        /* in case of error, free memory */
+        if (result.bad())
+            delete tree;
+    } else {
+        /* call the functions doing the real work */
+        result = setTree(rootTemplate.getTree());
+    }
+    return result;
 }
 
 
@@ -2274,8 +2290,7 @@ OFCondition DSRDocument::getAccessionNumber(OFString &value,
 OFCondition DSRDocument::setSpecificCharacterSet(const OFString &value,
                                                  const OFBool check)
 {
-    /* we only support a single value, i.e. no code extensions */
-    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal;
     if (result.good())
     {
         SpecificCharacterSetEnum = definedTermToCharacterSet(value);
index 93ad4da9f14ace10439dba8395db745bbbe1d2e5..e89ca5b1f37401e1eab74b601ef7b14ebc31fb12 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -26,6 +26,8 @@
 #include "dcmtk/dcmsr/dsrdocst.h"
 #include "dcmtk/dcmsr/dsrcontn.h"
 #include "dcmtk/dcmsr/dsrreftn.h"
+#include "dcmtk/dcmsr/dsrtpltn.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
 #include "dcmtk/dcmsr/dsriodcc.h"
 
 
@@ -43,7 +45,9 @@ DSRDocumentSubTree::DSRDocumentSubTree(const DSRDocumentSubTree &tree)
     ConstraintChecker(NULL),
     CurrentContentItem()
 {
-    /* the real work is done in the base class DSRTree */
+    /* the real work is done in the base class DSRTree,
+     * so just update the by-reference relationships (if any) */
+    checkByReferenceRelationships(CM_updateNodeID);
 }
 
 
@@ -99,6 +103,13 @@ OFBool DSRDocumentSubTree::isValid() const
 }
 
 
+OFBool DSRDocumentSubTree::isCursorValid() const
+{
+    /* check whether cursor points to an existing node */
+    return DSRTreeNodeCursor<DSRDocumentTreeNode>::isValid();
+}
+
+
 OFBool DSRDocumentSubTree::isValidDocumentTree(const E_RelationshipType defaultRelType) const
 {
     OFBool result = OFFalse;
@@ -119,6 +130,21 @@ OFBool DSRDocumentSubTree::isValidDocumentTree(const E_RelationshipType defaultR
 }
 
 
+OFBool DSRDocumentSubTree::isExpandedDocumentTree() const
+{
+    OFBool result = OFTrue;
+    DSRDocumentTreeNodeCursor cursor(getRoot());
+    if (cursor.isValid())
+    {
+        /* search for a single INCLUDE template node */
+        do {
+            result = (cursor.getNode()->getValueType() != VT_includedTemplate);
+        } while (result && cursor.iterate());
+    }
+    return result;
+}
+
+
 OFBool DSRDocumentSubTree::hasTemplateIdentification() const
 {
     OFBool result = OFFalse;
@@ -147,10 +173,12 @@ OFBool DSRDocumentSubTree::canUseTemplateIdentification() const
 
 
 OFCondition DSRDocumentSubTree::print(STD_NAMESPACE ostream &stream,
-                                      const size_t flags)
+                                      const size_t flags,
+                                      DSRPositionCounter *posCounter)
 {
     OFCondition result = EC_Normal;
-    DSRDocumentTreeNodeCursor cursor(getRoot());
+    /* initialize cursor with root node (and optional position counter) */
+    DSRDocumentTreeNodeCursor cursor(getRoot(), posCounter);
     if (cursor.isValid())
     {
         /* check and update by-reference relationships (if applicable) */
@@ -158,12 +186,12 @@ OFCondition DSRDocumentSubTree::print(STD_NAMESPACE ostream &stream,
         /* update the document tree for output (if needed) */
         updateTreeForOutput();
         OFString tmpString;
-        size_t level = 0;
-        const DSRDocumentTreeNode *node = NULL;
+        DSRDocumentTreeNode *node;
         /* iterate over all nodes */
         do {
             node = cursor.getNode();
-            if (node != NULL)
+            /* check whether to print node ID, position, indentation at all */
+            if ((node->getValueType() != VT_includedTemplate) || !(flags & PF_hideIncludedTemplateNodes))
             {
                 /* print node ID (might be useful for debugging purposes) */
                 if (flags & PF_printNodeID)
@@ -175,51 +203,83 @@ OFCondition DSRDocumentSubTree::print(STD_NAMESPACE ostream &stream,
                     stream << cursor.getPosition(tmpString) << "  ";
                 } else {
                     /* use line indentation */
-                    level = cursor.getLevel();
+                    const size_t level = cursor.getPositionCounter().getLevel();
                     if (level > 0)  // valid ?
                         stream << OFString((level - 1) * 2, ' ');
                 }
+            }
+            /* special handling for included templates */
+            if (node->getValueType() == VT_includedTemplate)
+            {
+                /* print separate line for internal template node (if requested) */
+                if (!(flags & PF_hideIncludedTemplateNodes))
+                {
+                    DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
+                    /* print content of template node */
+                    node->print(stream, flags);
+                    DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_RESET)
+                    stream << OFendl;
+                }
+                /* print content of included template (subtree) */
+                if (node->hasValidValue())
+                {
+                    DSRSubTemplate *subTempl = OFstatic_cast(DSRIncludedTemplateTreeNode *, node)->getValue().get();
+                    /* further indent included subtree */
+                    if (!(flags & PF_hideIncludedTemplateNodes))
+                        cursor.getPositionCounter().goDown();
+                    /* only print non-empty template (subtree) */
+                    if (!subTempl->isEmpty())
+                        result = subTempl->print(stream, flags, &cursor.getPositionCounter());
+                    /* make sure that empty templates are not counted */
+                    else if (flags & PF_hideIncludedTemplateNodes)
+                        --cursor.getPositionCounter();
+                    /* reset indentation of included subtree */
+                    if (!(flags & PF_hideIncludedTemplateNodes))
+                        cursor.getPositionCounter().goUp();
+                }
+            } else {
                 /* print node content */
                 DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
                 stream << "<";
                 result = node->print(stream, flags);
                 DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
                 stream << ">";
-                /* print observation date/time (optional) */
-                if (!node->getObservationDateTime().empty())
-                {
-                    stream << " {" << dicomToReadableDateTime(node->getObservationDateTime(), tmpString) << "}";
-                }
-                /* print annotation (optional) */
-                if (node->hasAnnotation() && (flags & PF_printAnnotation))
-                {
-                    DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_ANNOTATION)
-                    stream << "  \"" << node->getAnnotation().getText() << "\"";
-                }
-                /* print template identification (conditional) */
-                if (node->hasTemplateIdentification() && (flags & PF_printTemplateIdentification))
-                {
-                    OFString templateIdentifier;
-                    OFString mappingResource;
-                    OFString mappingResourceUID;
-                    if (node->getTemplateIdentification(templateIdentifier, mappingResource, mappingResourceUID).good())
-                    {
-                        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
-                        stream << "  # ";
-                        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_TEMPLATE_ID)
-                        stream << "TID " << templateIdentifier;
-                        stream << " (" << mappingResource;
-                        if (!mappingResourceUID.empty())
-                            stream << ", " << mappingResourceUID;
-                        stream << ")";
-                    }
-                }
+                /* print extended information on the node */
+                if (result.good())
+                    result = node->printExtended(stream, flags);
                 DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_RESET)
                 stream << OFendl;
-            } else
-                result = SR_EC_InvalidDocumentTree;
+            }
         } while (result.good() && cursor.iterate());
     }
+    /* store and return current value of position counter (if needed) */
+    if (posCounter != NULL)
+        *posCounter = cursor.getPositionCounter();
+    return result;
+}
+
+
+OFCondition DSRDocumentSubTree::writeXML(STD_NAMESPACE ostream &stream,
+                                         const size_t flags)
+{
+    OFCondition result = SR_EC_InvalidDocumentTree;
+    /* check whether document tree is valid */
+    if (isValid())
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* start writing from root node */
+        if (cursor.isValid())
+        {
+            /* check by-reference relationships (if applicable) */
+            checkByReferenceRelationships(CM_resetReferenceTargetFlag);
+            /* update the document tree for output (if needed) */
+            updateTreeForOutput();
+            /* write current node (and its siblings) */
+            do {
+                result = cursor.getNode()->writeXML(stream, flags);
+            } while (result.good() && cursor.gotoNext());
+        }
+    }
     return result;
 }
 
@@ -231,6 +291,44 @@ DSRContentItem &DSRDocumentSubTree::getCurrentContentItem()
 }
 
 
+size_t DSRDocumentSubTree::countNodes(const OFBool searchIntoSubTemplates,
+                                      const OFBool countIncludedTemplateNodes) const
+{
+    size_t count = 0;
+    /* check whether special handling of included templates is needed */
+    if (searchIntoSubTemplates || !countIncludedTemplateNodes)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        if (cursor.isValid())
+        {
+            /* iterate over all nodes */
+            do {
+                if (cursor.getNode()->getValueType() == VT_includedTemplate)
+                {
+                    /* special handling: count nodes of included subtree */
+                    if (searchIntoSubTemplates)
+                    {
+                        const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, cursor.getNode())->getValue().get();
+                        if (subTempl != NULL)
+                            count += subTempl->countNodes(searchIntoSubTemplates, countIncludedTemplateNodes);
+                    }
+                    /* also need to count "included template" node */
+                    if (countIncludedTemplateNodes)
+                        ++count;
+                } else {
+                  /* standard case */
+                  ++count;
+                }
+            } while (cursor.iterate());
+        }
+    } else {
+        /* call the inherited function */
+        count = DSRTree<DSRDocumentTreeNode>::countNodes();
+    }
+    return count;
+}
+
+
 size_t DSRDocumentSubTree::gotoNamedNode(const DSRCodedEntryValue &conceptName,
                                          const OFBool startFromRoot,
                                          const OFBool searchIntoSub)
@@ -240,7 +338,7 @@ size_t DSRDocumentSubTree::gotoNamedNode(const DSRCodedEntryValue &conceptName,
     {
         if (startFromRoot)
             gotoRoot();
-        const DSRDocumentTreeNode *node = NULL;
+        const DSRDocumentTreeNode *node;
         /* iterate over all nodes */
         do {
             node = getNode();
@@ -252,6 +350,17 @@ size_t DSRDocumentSubTree::gotoNamedNode(const DSRCodedEntryValue &conceptName,
 }
 
 
+size_t DSRDocumentSubTree::gotoNamedChildNode(const DSRCodedEntryValue &conceptName,
+                                              const OFBool searchIntoSub)
+{
+    /* first, goto child node */
+    size_t nodeID = gotoChild();
+    if (nodeID > 0)
+        nodeID = gotoNamedNode(conceptName, OFFalse /*startFromRoot*/, searchIntoSub);
+    return nodeID;
+}
+
+
 size_t DSRDocumentSubTree::gotoNextNamedNode(const DSRCodedEntryValue &conceptName,
                                              const OFBool searchIntoSub)
 {
@@ -283,36 +392,40 @@ size_t DSRDocumentSubTree::gotoNextAnnotatedNode(const OFString &annotationText)
 
 OFBool DSRDocumentSubTree::canAddContentItem(const E_RelationshipType relationshipType,
                                              const E_ValueType valueType,
-                                             const E_AddMode addMode)
+                                             const E_AddMode addMode) const
 {
     OFBool result = OFFalse;
     /* never accept invalid types */
     if ((relationshipType != RT_invalid) && (valueType != VT_invalid))
     {
-        const DSRDocumentTreeNode *node = getNode();
-        if (node != NULL)
+        /* also do not accept internal types */
+        if ((valueType != VT_byReference) && (valueType != VT_includedTemplate))
         {
-            /* do we have an IOD constraint checker? */
-            if (ConstraintChecker != NULL)
+            const DSRDocumentTreeNode *node = getNode();
+            if (node != NULL)
             {
-                if ((addMode == AM_beforeCurrent) || (addMode == AM_afterCurrent))
+                /* do we have an IOD constraint checker? */
+                if (ConstraintChecker != NULL)
                 {
-                    /* check parent node */
-                    node = getParentNode();
-                    if (node != NULL)
+                    if ((addMode == AM_beforeCurrent) || (addMode == AM_afterCurrent))
+                    {
+                        /* check parent node */
+                        node = getParentNode();
+                        if (node != NULL)
+                            result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, valueType);
+                    } else
                         result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, valueType);
-                } else
-                    result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, valueType);
-            }
-            /* a root node can only be added to an empty tree */
-            else if (relationshipType != RT_isRoot)
-            {
-                /* "unknown" relationships are only allowed on top-level */
-                result = (!hasParentNode() && (addMode != AM_belowCurrent)) || (relationshipType != RT_unknown);
+                }
+                /* a root node can only be added to an empty tree */
+                else if (relationshipType != RT_isRoot)
+                {
+                    /* "unknown" relationships are only allowed on top-level */
+                    result = (!hasParentNode() && (addMode != AM_belowCurrent)) || (relationshipType != RT_unknown);
+                }
+            } else {
+                /* no special rules for root node (at least in a subtree) */
+                result = OFTrue;
             }
-        } else {
-            /* no special rules for root node (at least in a subtree) */
-            result = OFTrue;
         }
     }
     return result;
@@ -320,7 +433,7 @@ OFBool DSRDocumentSubTree::canAddContentItem(const E_RelationshipType relationsh
 
 
 OFBool DSRDocumentSubTree::canAddByReferenceRelationship(const E_RelationshipType relationshipType,
-                                                         const E_ValueType targetValueType)
+                                                         const E_ValueType targetValueType) const
 {
     OFBool result = OFFalse;
     /* never accept invalid types */
@@ -334,7 +447,7 @@ OFBool DSRDocumentSubTree::canAddByReferenceRelationship(const E_RelationshipTyp
                 result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, targetValueType, OFTrue /*byReference*/);
         } else {
             /* certain relationships are never allowed */
-            result = (relationshipType != RT_isRoot) && (relationshipType != RT_unknown);
+            result = (relationshipType != RT_isRoot) && (relationshipType != RT_unknown) && (targetValueType != VT_includedTemplate);
         }
     }
     return result;
@@ -395,7 +508,8 @@ OFCondition DSRDocumentSubTree::addContentItem(DSRDocumentTreeNode *node,
 
 OFCondition DSRDocumentSubTree::addContentItem(const E_RelationshipType relationshipType,
                                                const E_ValueType valueType,
-                                               const DSRCodedEntryValue &conceptName)
+                                               const DSRCodedEntryValue &conceptName,
+                                               const OFBool check)
 {
     OFCondition result = EC_Normal;
     /* call the functions doing the real work */
@@ -404,7 +518,7 @@ OFCondition DSRDocumentSubTree::addContentItem(const E_RelationshipType relation
         if (!conceptName.isEmpty())
         {
             /* use a more appropriate error code than the one returned */
-            if (getCurrentContentItem().setConceptName(conceptName).bad())
+            if (getCurrentContentItem().setConceptName(conceptName, check).bad())
                 result = SR_EC_InvalidConceptName;
         }
     } else
@@ -415,7 +529,8 @@ OFCondition DSRDocumentSubTree::addContentItem(const E_RelationshipType relation
 
 OFCondition DSRDocumentSubTree::addChildContentItem(const E_RelationshipType relationshipType,
                                                     const E_ValueType valueType,
-                                                    const DSRCodedEntryValue &conceptName)
+                                                    const DSRCodedEntryValue &conceptName,
+                                                    const OFBool check)
 {
     OFCondition result = EC_Normal;
     /* call the functions doing the real work */
@@ -424,7 +539,7 @@ OFCondition DSRDocumentSubTree::addChildContentItem(const E_RelationshipType rel
         if (!conceptName.isEmpty())
         {
             /* use a more appropriate error code than the one returned */
-            if (getCurrentContentItem().setConceptName(conceptName).bad())
+            if (getCurrentContentItem().setConceptName(conceptName, check).bad())
                 result = SR_EC_InvalidConceptName;
         }
     } else
@@ -444,7 +559,7 @@ size_t DSRDocumentSubTree::addByReferenceRelationship(const E_RelationshipType r
         if (cursor.isValid())
         {
             /* goto specified target node (might be improved later on) */
-            if (cursor.gotoNode(referencedNodeID))
+            if (cursor.gotoNode(referencedNodeID) > 0)
             {
                 OFString sourceString;
                 OFString targetString;
@@ -454,29 +569,33 @@ size_t DSRDocumentSubTree::addByReferenceRelationship(const E_RelationshipType r
                 if (sourceString.substr(0, targetString.length()) != targetString)
                 {
                     const DSRDocumentTreeNode *targetNode = cursor.getNode();
-                    if (targetNode != NULL)
+                    const E_ValueType targetValueType = targetNode->getValueType();
+                    /* check whether relationship is valid/allowed */
+                    if (canAddByReferenceRelationship(relationshipType, targetValueType))
                     {
-                        const E_ValueType targetValueType = targetNode->getValueType();
-                        /* check whether relationship is valid/allowed */
-                        if (canAddByReferenceRelationship(relationshipType, targetValueType))
+                        DSRDocumentTreeNode *node = new DSRByReferenceTreeNode(relationshipType, referencedNodeID, targetValueType);
+                        if (node != NULL)
                         {
-                            DSRDocumentTreeNode *node = new DSRByReferenceTreeNode(relationshipType, referencedNodeID, targetValueType);
-                            if (node != NULL)
+                            nodeID = addNode(node, AM_belowCurrent);
+                            /* in case of error, free allocated memory */
+                            if (nodeID == 0)
                             {
-                                nodeID = addNode(node, AM_belowCurrent);
-                                /* in case of error, free allocated memory */
-                                if (nodeID == 0)
-                                {
-                                    delete node;
-                                    node = NULL;
-                                } else {
-                                    /* otherwise, go back to current node */
-                                    goUp();
-                                }
+                                delete node;
+                                node = NULL;
+                            } else {
+                                /* otherwise, go back to current node */
+                                goUp();
                             }
                         }
                     }
+                } else {
+                    /* report a warning with some details to the debug logger */
+                    DCMSR_DEBUG("Invalid by-reference relationship from content item \""
+                        << sourceString << "\" to \"" << targetString << "\" (loop check)");
                 }
+            } else {
+                /* report a warning with some details to the debug logger */
+                DCMSR_DEBUG("Target content item of by-reference relationship does not exist");
             }
         }
     }
@@ -484,15 +603,21 @@ size_t DSRDocumentSubTree::addByReferenceRelationship(const E_RelationshipType r
 }
 
 
-OFBool DSRDocumentSubTree::canInsertSubTree(DSRDocumentSubTree *tree,
+OFCondition DSRDocumentSubTree::updateByReferenceRelationships()
+{
+    /* update the position strings of by-reference relationships */
+    return checkByReferenceRelationships(CM_updatePositionString);
+}
+
+
+OFBool DSRDocumentSubTree::canInsertSubTree(const DSRDocumentSubTree *tree,
                                             const E_AddMode addMode,
-                                            const E_RelationshipType defaultRelType)
+                                            const E_RelationshipType defaultRelType) const
 {
     OFBool result = OFFalse;
     if (tree != NULL)
     {
-        const DSRDocumentTreeNode *currentNode = getNode();
-        if (currentNode != NULL)
+        if (getNode() != NULL)
         {
             /* check whether the top-level nodes of the subtree can be added */
             DSRDocumentTreeNodeCursor cursor(tree->getRoot());
@@ -634,6 +759,48 @@ DSRDocumentSubTree *DSRDocumentSubTree::cloneSubTree(const size_t stopAfterNodeI
 }
 
 
+OFCondition DSRDocumentSubTree::createExpandedSubTree(DSRDocumentSubTree *&tree) const
+{
+    OFCondition result = EC_Normal;
+    if (!isEmpty())
+    {
+        /* first, create a clone of this tree */
+        tree = clone();
+        if (tree != NULL)
+        {
+            /* expand all "included template" nodes in the new tree */
+            result = expandIncludedTemplates(tree);
+            /* in case of error, free memory */
+            if (result.bad())
+            {
+                delete tree;
+                tree = NULL;
+            }
+        } else
+            result = EC_MemoryExhausted;
+    } else {
+        tree = NULL;
+        result = SR_EC_EmptyDocumentTree;
+    }
+    return result;
+}
+
+
+OFBool DSRDocumentSubTree::compareTemplateIdentification(const OFString &templateIdentifier,
+                                                         const OFString &mappingResource,
+                                                         const OFString &mappingResourceUID) const
+{
+    OFBool result = OFFalse;
+    /* check whether template identification is possible */
+    if (canUseTemplateIdentification())
+    {
+        /* compare with template identification of root CONTAINER */
+        result = getRoot()->compareTemplateIdentification(templateIdentifier, mappingResource, mappingResourceUID);
+    }
+    return result;
+}
+
+
 OFCondition DSRDocumentSubTree::getTemplateIdentification(OFString &templateIdentifier,
                                                           OFString &mappingResource) const
 {
@@ -699,6 +866,13 @@ size_t DSRDocumentSubTree::addNode(DSRDocumentTreeNode *node,
 }
 
 
+size_t DSRDocumentSubTree::replaceNode(DSRDocumentTreeNode *node)
+{
+    /* might add further checks later on */
+    return DSRTree<DSRDocumentTreeNode>::replaceNode(node);
+}
+
+
 DSRDocumentTreeNode *DSRDocumentSubTree::extractNode()
 {
     /* might add further checks later on */
@@ -720,6 +894,98 @@ size_t DSRDocumentSubTree::removeNode()
 }
 
 
+OFCondition DSRDocumentSubTree::includeTemplate(const DSRSharedSubTemplate &subTemplate,
+                                                const E_AddMode addMode,
+                                                const E_RelationshipType defaultRelType)
+{
+    OFCondition result = EC_Normal;
+    /* make sure that managed object exists */
+    if (subTemplate)
+    {
+        /* create node that stores the reference to the included template */
+        DSRDocumentTreeNode *node = new DSRIncludedTemplateTreeNode(subTemplate, defaultRelType);
+        if (node != NULL)
+        {
+            /* check whether adding the node actually works */
+            if (addNode(node, addMode) == 0)
+            {
+                result = SR_EC_CannotAddContentItem;
+                /* if not, delete node */
+                delete node;
+            }
+        } else
+            result = EC_MemoryExhausted;
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+OFCondition DSRDocumentSubTree::expandIncludedTemplates(DSRDocumentSubTree *tree) const
+{
+    OFCondition result = EC_Normal;
+    /* make sure that the passed tree pointer is valid and the tree is not empty */
+    if ((tree != NULL) && (tree->gotoRoot() > 0))
+    {
+        OFBool nodeDeleted;
+        const DSRDocumentTreeNode *node;
+        /* iterate over all nodes */
+        do {
+            node = tree->getNode();
+            nodeDeleted = OFFalse;
+            if (node != NULL)
+            {
+                /* and expand the included templates (if any) */
+                if (node->getValueType() == VT_includedTemplate)
+                {
+                    const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, node)->getValue().get();
+                    if (subTempl != NULL)
+                    {
+                        /* template has no content items */
+                        if (subTempl->isEmpty())
+                        {
+                            /* just remove current node (included template) */
+                            nodeDeleted = (tree->removeNode() > 0);
+                        } else {
+                            /* clone the subtree managed by the template */
+                            DSRDocumentSubTree *subTree = subTempl->cloneTree();
+                            if (subTree != NULL)
+                            {
+                                /* check whether there are any "unknown" relationships on top level */
+                                const E_RelationshipType defaultRelType = node->getRelationshipType();
+                                DSRDocumentTreeNodeCursor cursor(subTree->getRoot());
+                                do {
+                                    DSRDocumentTreeNode *curNode = cursor.getNode();
+                                    /* if so, replace them with the "default" relationship type */
+                                    if ((curNode != NULL) && (curNode->getRelationshipType() == RT_unknown))
+                                        curNode->setRelationshipType(defaultRelType);
+                                } while (cursor.gotoNext());
+                                /* replace the current node (and its children) with the cloned subtree */
+                                if (tree->replaceNode(subTree->getRoot()) > 0)
+                                {
+                                    /* "forget" reference to root node */
+                                    subTree->getAndRemoveRootNode();
+                                } else
+                                    result = SR_EC_CannotInsertSubTree;
+                                /* free memory */
+                                delete subTree;
+                            } else
+                                result = EC_MemoryExhausted;
+                        }
+                    }
+                }
+            } else
+                result = SR_EC_InvalidDocumentTree;
+        } while (result.good() && (nodeDeleted || tree->iterate()));
+        /* finally, set cursor back to root node */
+        if (result.good())
+            tree->gotoRoot();
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
 OFCondition DSRDocumentSubTree::checkByReferenceRelationships(const size_t mode,
                                                               const size_t flags)
 {
@@ -737,95 +1003,89 @@ OFCondition DSRDocumentSubTree::checkByReferenceRelationships(const size_t mode,
             DSRDocumentTreeNodeCursor cursor(getRoot());
             if (cursor.isValid())
             {
-                const DSRDocumentTreeNode *node = NULL;
                 /* for all content items */
                 do {
-                    node = cursor.getNode();
-                    if (node != NULL)
+                    /* only check/update by-reference relationships */
+                    if (cursor.getNode()->getValueType() == VT_byReference)
                     {
-                        /* only check/update by-reference relationships */
-                        if (node->getValueType() == VT_byReference)
+                        size_t refNodeID = 0;
+                        OFString nodePosString;
+                        cursor.getPosition(nodePosString);
+                        /* type cast to access members of by-reference class */
+                        DSRByReferenceTreeNode *byRefNode = OFconst_cast(DSRByReferenceTreeNode *, OFstatic_cast(const DSRByReferenceTreeNode *, cursor.getNode()));
+                        if (flags & RF_showCurrentlyProcessedItem)
+                            DCMSR_INFO("Updating by-reference relationship in content item " << nodePosString);
+                        /* start searching from root node, be careful with large trees! (tbd: might be improved later on) */
+                        DSRDocumentTreeNodeCursor refCursor(getRoot());
+                        if (mode & CM_updateNodeID)
                         {
-                            size_t refNodeID = 0;
-                            OFString nodePosString;
-                            cursor.getPosition(nodePosString);
-                            /* type cast to access members of by-reference class */
-                            DSRByReferenceTreeNode *byRefNode = OFconst_cast(DSRByReferenceTreeNode *, OFstatic_cast(const DSRByReferenceTreeNode *, node));
-                            if (flags & RF_showCurrentlyProcessedItem)
-                                DCMSR_INFO("Updating by-reference relationship in content item " << nodePosString);
-                            /* start searching from root node, be careful with large trees! (tbd: might be improved later on) */
-                            DSRDocumentTreeNodeCursor refCursor(getRoot());
-                            if (mode & CM_updateNodeID)
+                            /* update node ID (based on position string; tbc: what about included templates?) */
+                            refNodeID = refCursor.gotoNode(byRefNode->getReferencedContentItem());
+                            const DSRDocumentTreeNode *targetNode = (refNodeID > 0) ? refCursor.getNode() : NULL;
+                            const E_ValueType targetValueType = (targetNode != NULL) ? targetNode->getValueType() : VT_invalid;
+                            byRefNode->updateReference(refNodeID, targetValueType);
+                        } else {
+                            /* node ID is expected to be valid */
+                            refNodeID = refCursor.gotoNode(byRefNode->getReferencedNodeID());
+                            if (mode & CM_updatePositionString)
                             {
-                                /* update node ID (based on position string) */
-                                refNodeID = refCursor.gotoNode(byRefNode->getReferencedContentItem());
-                                const DSRDocumentTreeNode *targetNode = (refNodeID > 0) ? refCursor.getNode() : NULL;
-                                const E_ValueType targetValueType = (targetNode != NULL) ? targetNode->getValueType() : VT_invalid;
-                                byRefNode->updateReference(refNodeID, targetValueType);
-                            } else {
-                                /* node ID is expected to be valid */
-                                refNodeID = refCursor.gotoNode(byRefNode->getReferencedNodeID());
-                                if (mode & CM_updatePositionString)
-                                {
-                                    OFString refPosString;
-                                    /* update position string */
-                                    if (refNodeID > 0)
-                                        refCursor.getPosition(refPosString);
-                                    byRefNode->updateReference(refPosString);
-                                } else if (refNodeID == 0)
-                                    byRefNode->invalidateReference();
-                            }
-                            const OFString refContentItem(byRefNode->getReferencedContentItem());
-                            if (refNodeID > 0)
+                                OFString refPosString;
+                                /* update position string (tbd: does not yet work correctly with "included templates" */
+                                if (refNodeID > 0)
+                                    refCursor.getPosition(refPosString);
+                                byRefNode->updateReference(refPosString);
+                            } else if (refNodeID == 0)
+                                byRefNode->invalidateReference();
+                        }
+                        const OFString refContentItem(byRefNode->getReferencedContentItem());
+                        if (refNodeID > 0)
+                        {
+                            /* source and target content items should not be identical */
+                            if (refNodeID != cursor.getNodeID())
                             {
-                                /* source and target content items should not be identical */
-                                if (refNodeID != cursor.getNodeID())
+                                /* check whether target node is an ancestor of source node (prevent loops) */
+                                if (refContentItem.empty() || (nodePosString.substr(0, refContentItem.length()) != refContentItem))
                                 {
-                                    /* check whether target node is an ancestor of source node (prevent loops) */
-                                    if (refContentItem.empty() || (nodePosString.substr(0, refContentItem.length()) != refContentItem))
+                                    /* refCursor should now point to the reference target (refNodeID > 0) */
+                                    const DSRDocumentTreeNode *parentNode = cursor.getParentNode();
+                                    DSRDocumentTreeNode *targetNode = refCursor.getNode();
+                                    if ((parentNode != NULL) && (targetNode != NULL))
                                     {
-                                        /* refCursor should now point to the reference target (refNodeID > 0) */
-                                        const DSRDocumentTreeNode *parentNode = cursor.getParentNode();
-                                        DSRDocumentTreeNode *targetNode = refCursor.getNode();
-                                        if ((parentNode != NULL) && (targetNode != NULL))
+                                        /* specify that this content item is target of an by-reference relationship */
+                                        targetNode->setReferenceTarget();
+                                        /* do we really need to check the constraints? */
+                                        E_RelationshipType relationshipType = byRefNode->getRelationshipType();
+                                        if (!(flags & RF_ignoreRelationshipConstraints) &&
+                                            (!(flags & RF_acceptUnknownRelationshipType) || (relationshipType != RT_unknown)))
                                         {
-                                            /* specify that this content item is target of an by-reference relationship */
-                                            targetNode->setReferenceTarget();
-                                            /* do we really need to check the constraints? */
-                                            E_RelationshipType relationshipType = byRefNode->getRelationshipType();
-                                            if (!(flags & RF_ignoreRelationshipConstraints) &&
-                                                (!(flags & RF_acceptUnknownRelationshipType) || (relationshipType != RT_unknown)))
+                                            /* check whether relationship is valid */
+                                            if ((ConstraintChecker != NULL) &&
+                                                !ConstraintChecker->checkContentRelationship(parentNode->getValueType(), relationshipType,
+                                                                                             targetNode->getValueType(), OFTrue /*byReference*/))
                                             {
-                                                /* check whether relationship is valid */
-                                                if ((ConstraintChecker != NULL) &&
-                                                    !ConstraintChecker->checkContentRelationship(parentNode->getValueType(), relationshipType,
-                                                                                                 targetNode->getValueType(), OFTrue /*byReference*/))
-                                                {
-                                                    if (refContentItem.empty())
-                                                        DCMSR_WARN("Invalid by-reference relationship at content item \"" << nodePosString << "\"");
-                                                    else {
-                                                        DCMSR_WARN("Invalid by-reference relationship between content item \""
-                                                            << nodePosString << "\" and \"" << refContentItem << "\"");
-                                                    }
+                                                if (refContentItem.empty())
+                                                    DCMSR_WARN("Invalid by-reference relationship at content item \"" << nodePosString << "\"");
+                                                else {
+                                                    DCMSR_WARN("Invalid by-reference relationship between content item \""
+                                                        << nodePosString << "\" and \"" << refContentItem << "\"");
                                                 }
                                             }
-                                        } else
-                                            DCMSR_WARN("Corrupted data structures while checking by-reference relationships");
-                                    } else {
-                                        DCMSR_WARN("By-reference relationship from \"" << nodePosString << "\" to ancestor content item \""
-                                            << refContentItem << "\" (loop check)");
-                                    }
-                                } else
-                                    DCMSR_WARN("Source and target content item of by-reference relationship are identical");
-                            } else {
-                                if (refContentItem.empty())
-                                    DCMSR_WARN("Target content item of by-reference relationship does not exist");
-                                else
-                                    DCMSR_WARN("Target content item \"" << refContentItem << "\" of by-reference relationship does not exist");
-                            }
+                                        }
+                                    } else
+                                        DCMSR_WARN("Corrupted data structures while checking by-reference relationships");
+                                } else {
+                                    DCMSR_WARN("By-reference relationship from \"" << nodePosString << "\" to ancestor content item \""
+                                        << refContentItem << "\" (loop check)");
+                                }
+                            } else
+                                DCMSR_WARN("Source and target content item of by-reference relationship are identical");
+                        } else {
+                            if (refContentItem.empty())
+                                DCMSR_WARN("Target content item of by-reference relationship does not exist");
+                            else
+                                DCMSR_WARN("Target content item \"" << refContentItem << "\" of by-reference relationship does not exist");
                         }
-                    } else
-                        result = SR_EC_InvalidDocumentTree;
+                    }
                 } while (result.good() && cursor.iterate());
             }
         }
@@ -840,13 +1100,10 @@ void DSRDocumentSubTree::resetReferenceTargetFlag()
     DSRDocumentTreeNodeCursor cursor(getRoot());
     if (cursor.isValid())
     {
-        DSRDocumentTreeNode *node = NULL;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
             /* and reset the flag */
-            if (node != NULL)
-                node->setReferenceTarget(OFFalse);
+            cursor.getNode()->setReferenceTarget(OFFalse);
         } while (cursor.iterate());
     }
 }
@@ -858,8 +1115,8 @@ void DSRDocumentSubTree::updateTreeForOutput()
 }
 
 
-OFCondition DSRDocumentSubTree::checkSubTreeConstraints(DSRDocumentSubTree *tree,
-                                                        DSRIODConstraintChecker *checker)
+OFCondition DSRDocumentSubTree::checkSubTreeConstraints(const DSRDocumentSubTree *tree,
+                                                        const DSRIODConstraintChecker *checker) const
 {
     OFCondition result = EC_Normal;
     /* make sure that the passed tree pointer is valid */
@@ -887,6 +1144,13 @@ OFCondition DSRDocumentSubTree::checkSubTreeConstraints(DSRDocumentSubTree *tree
                             check = checker->checkContentRelationship(parent->getValueType(),
                                                                       node->getRelationshipType(), targetValueType,
                                                                       OFTrue /*byReference*/);
+                        }
+                        /* is it an included template? */
+                        else if (node->getValueType() == VT_includedTemplate)
+                        {
+                            // tbd: need to implement a proper check for this case
+                            DCMSR_TRACE("DSRDocumentSubTree::checkSubTreeConstraints() Need to check subtree of included template "
+                                << "at node id:" << node->getNodeID() << " ... not yet implemented");
                         } else {
                             /* check whether the relationship with parent is allowed */
                             check = checker->checkContentRelationship(parent->getValueType(),
index 8c492925d9554b86caa0901a695163b5232cbceb..b7583e877f2d3c3779d5ec9064d6eed21e969692 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -136,6 +136,38 @@ OFCondition DSRDocumentTreeNode::print(STD_NAMESPACE ostream &stream,
 }
 
 
+OFCondition DSRDocumentTreeNode::printExtended(STD_NAMESPACE ostream &stream,
+                                               const size_t flags) const
+{
+    /* print observation date/time (optional) */
+    if (!ObservationDateTime.empty())
+    {
+        OFString tmpString;
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
+        stream << " {" << dicomToReadableDateTime(ObservationDateTime, tmpString) << "}";
+    }
+    /* print annotation (optional) */
+    if (hasAnnotation() && (flags & PF_printAnnotation))
+    {
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_ANNOTATION)
+        stream << "  \"" << getAnnotation().getText() << "\"";
+    }
+    /* print template identification (conditional) */
+    if (hasTemplateIdentification() && (flags & PF_printTemplateIdentification))
+    {
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
+        stream << "  # ";
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_TEMPLATE_ID)
+        stream << "TID " << TemplateIdentifier;
+        stream << " (" << MappingResource;
+        if (!MappingResourceUID.empty())
+            stream << ", " << MappingResourceUID;
+        stream << ")";
+    }
+    return EC_Normal;
+}
+
+
 OFCondition DSRDocumentTreeNode::read(DcmItem &dataset,
                                       const DSRIODConstraintChecker *constraintChecker,
                                       const size_t flags)
@@ -282,7 +314,7 @@ OFCondition DSRDocumentTreeNode::writeXML(STD_NAMESPACE ostream &stream,
     /* write optional template identification */
     if ((flags & XF_writeTemplateIdentification) && !(flags & XF_templateElementEnclosesItems))
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
         {
             if (flags & XF_templateIdentifierAsAttribute)
             {
@@ -336,14 +368,9 @@ OFCondition DSRDocumentTreeNode::writeXML(STD_NAMESPACE ostream &stream,
     DSRDocumentTreeNodeCursor cursor(getDown());
     if (cursor.isValid())
     {
-        const DSRDocumentTreeNode *node = NULL;
         /* for all child nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                result = node->writeXML(stream, flags);
-            else
-                result = SR_EC_InvalidDocumentTree;
+            result = cursor.getNode()->writeXML(stream, flags);
         } while (result.good() && cursor.gotoNext());
     }
     return result;
@@ -357,7 +384,7 @@ void DSRDocumentTreeNode::writeXMLItemStart(STD_NAMESPACE ostream &stream,
     /* write optional template identification */
     if ((flags & XF_writeTemplateIdentification) && (flags & XF_templateElementEnclosesItems))
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
         {
             stream << "<template resource=\"" << MappingResource << "\"";
             if (!MappingResourceUID.empty())
@@ -393,7 +420,7 @@ void DSRDocumentTreeNode::writeXMLItemEnd(STD_NAMESPACE ostream &stream,
     /* close optional template identification */
     if ((flags & XF_writeTemplateIdentification) && (flags & XF_templateElementEnclosesItems))
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
             stream << "</template>" << OFendl;
     }
 }
@@ -516,6 +543,18 @@ OFCondition DSRDocumentTreeNode::setObservationUID(const OFString &observationUI
 }
 
 
+OFBool DSRDocumentTreeNode::compareTemplateIdentification(const OFString &templateIdentifier,
+                                                          const OFString &mappingResource,
+                                                          const OFString &mappingResourceUID) const
+{
+    OFBool result = (TemplateIdentifier == templateIdentifier) && (MappingResource == mappingResource);
+    /* mapping resource UID is optional, so only check it if present */
+    if (result && !MappingResourceUID.empty() && !mappingResourceUID.empty())
+        result = (MappingResourceUID == mappingResourceUID);
+    return result;
+}
+
+
 OFCondition DSRDocumentTreeNode::getTemplateIdentification(OFString &templateIdentifier,
                                                            OFString &mappingResource) const
 {
@@ -568,7 +607,7 @@ OFCondition DSRDocumentTreeNode::setTemplateIdentification(const OFString &templ
     }
     if (result.good())
     {
-        if ((ValueType != VT_Container) && !templateIdentifier.empty())
+        if ((ValueType != VT_Container) && (ValueType != VT_includedTemplate) && !templateIdentifier.empty())
             DCMSR_WARN("Template identification should only be specified for CONTAINER content items");
         /* set current values, might be empty */
         TemplateIdentifier = templateIdentifier;
@@ -596,7 +635,7 @@ OFCondition DSRDocumentTreeNode::readContentItem(DcmItem & /*dataset*/,
 
 OFCondition DSRDocumentTreeNode::writeContentItem(DcmItem & /*dataset*/) const
 {
-    /* no content to insert */
+    /* no content to write */
     return EC_Normal;
 }
 
@@ -656,13 +695,16 @@ OFCondition DSRDocumentTreeNode::readDocumentRelationshipMacro(DcmItem &dataset,
     /* read ObservationUID (optional) */
     getAndCheckStringValueFromDataset(dataset, DCM_ObservationUID, ObservationUID, "1", "3");
     /* determine template identifier expected for this document */
-    const OFString expectedTemplateIdentifier = (constraintChecker != NULL) ? OFSTRING_GUARD(constraintChecker->getRootTemplateIdentifier()) : "";
+    OFString expectedTemplateIdentifier;
+    OFString expectedMappingResource;
+    if (constraintChecker != NULL)
+        constraintChecker->getRootTemplateIdentification(expectedTemplateIdentifier, expectedMappingResource);
     /* read ContentTemplateSequence (conditional) */
     DcmItem *ditem = NULL;
     if (dataset.findAndGetSequenceItem(DCM_ContentTemplateSequence, ditem, 0 /*itemNum*/).good())
     {
         if (ValueType != VT_Container)
-            DCMSR_WARN("Found ContentTemplateSequence for content item that is not a CONTAINER");
+            DCMSR_WARN("Found Content Template Sequence for content item \"" << posString << "\" which is not a CONTAINER");
         getAndCheckStringValueFromDataset(*ditem, DCM_MappingResource, MappingResource, "1", "1", "ContentTemplateSequence");
         getAndCheckStringValueFromDataset(*ditem, DCM_MappingResourceUID, MappingResourceUID, "1", "3", "ContentTemplateSequence");
         getAndCheckStringValueFromDataset(*ditem, DCM_TemplateIdentifier, TemplateIdentifier, "1", "1", "ContentTemplateSequence");
@@ -672,7 +714,7 @@ OFCondition DSRDocumentTreeNode::readDocumentRelationshipMacro(DcmItem &dataset,
             /* check whether the correct Mapping Resource UID is used (if present) */
             if (!MappingResourceUID.empty() && (MappingResourceUID != UID_DICOMContentMappingResource))
             {
-                DCMSR_WARN("Incorrect value for MappingResourceUID (" << MappingResourceUID << "), "
+                DCMSR_WARN("Incorrect value for Mapping Resource UID (" << MappingResourceUID << "), "
                     << UID_DICOMContentMappingResource << " expected");
             }
             /* check for a common error: Template Identifier includes "TID" prefix */
@@ -680,35 +722,35 @@ OFCondition DSRDocumentTreeNode::readDocumentRelationshipMacro(DcmItem &dataset,
             {
                 if ((TemplateIdentifier.find_first_not_of("0123456789") != OFString_npos) || (TemplateIdentifier.at(0) == '0'))
                 {
-                    DCMSR_DEBUG("Reading invalid TemplateIdentifier (" << TemplateIdentifier << ")");
-                    DCMSR_WARN("TemplateIdentifier shall be a string of digits without leading zeros");
+                    DCMSR_DEBUG("Reading invalid Template Identifier (" << TemplateIdentifier << ")");
+                    DCMSR_WARN("Template Identifier shall be a string of digits without leading zeros");
                 }
             }
         }
         /* check whether the expected template (if known) has been used */
         if (!expectedTemplateIdentifier.empty())
         {
-            /* check for DICOM Content Mapping Resource */
-            if (MappingResource == "DCMR")
+            /* compare with expected mapping resource */
+            if (MappingResource != expectedMappingResource)
             {
-                /* compare with expected TID */
-                if (TemplateIdentifier != expectedTemplateIdentifier)
-                {
-                    DCMSR_WARN("Incorrect value for TemplateIdentifier ("
-                        << ((TemplateIdentifier.empty()) ? "<empty>" : TemplateIdentifier) << "), "
-                        << expectedTemplateIdentifier << " expected");
-                }
-            } else if (!MappingResource.empty())
-                printUnknownValueWarningMessage("MappingResource", MappingResource.c_str());
+                DCMSR_WARN("Incorrect value for Mapping Resource ("
+                    << ((MappingResource.empty()) ? "<empty>" : MappingResource) << "), "
+                    << expectedMappingResource << " expected");
+            }
+            /* compare with expected template identifier */
+            if (TemplateIdentifier != expectedTemplateIdentifier)
+            {
+                DCMSR_WARN("Incorrect value for Template Identifier ("
+                    << ((TemplateIdentifier.empty()) ? "<empty>" : TemplateIdentifier) << "), "
+                    << expectedTemplateIdentifier << " expected");
+            }
         }
     }
     /* only check template identifier on dataset level (root node) */
     else if ((dataset.ident() == EVR_dataset) && !expectedTemplateIdentifier.empty())
     {
-        DCMSR_WARN("ContentTemplateSequence missing or empty, TemplateIdentifier "
-            << expectedTemplateIdentifier
-            /* DICOM Content Mapping Resource is currently hard-coded (see above) */
-            <<  " (DCMR) expected");
+        DCMSR_WARN("Content Template Sequence missing or empty, Template Identifier "
+            << expectedTemplateIdentifier << " (" << expectedMappingResource << ") expected");
     }
     /* read ContentSequence */
     if (result.good())
@@ -729,7 +771,7 @@ OFCondition DSRDocumentTreeNode::writeDocumentRelationshipMacro(DcmItem &dataset
         addElementToDataset(result, dataset, new DcmSequenceOfItems(DigitalSignatures), "1-n", "3", "SOPCommonModule");
         DCMSR_WARN("Writing possibly incorrect digital signature - same as read from dataset");
     }
-    /* add to mark stack */
+    /* add to marked items stack */
     if (MarkFlag && (markedItems != NULL))
         markedItems->push(&dataset);
     /* write ObservationDateTime (conditional) */
@@ -740,7 +782,7 @@ OFCondition DSRDocumentTreeNode::writeDocumentRelationshipMacro(DcmItem &dataset
     /* write ContentTemplateSequence (conditional) */
     if (result.good())
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
         {
             DcmItem *ditem = NULL;
             /* create sequence with a single item */
@@ -748,7 +790,7 @@ OFCondition DSRDocumentTreeNode::writeDocumentRelationshipMacro(DcmItem &dataset
             if (result.good())
             {
                 if (ValueType != VT_Container)
-                    DCMSR_WARN("Writing ContentTemplateSequence for content item that is not a CONTAINER");
+                    DCMSR_WARN("Writing Content Template Sequence for content item that is not a CONTAINER");
                 /* write item data */
                 putStringValueToDataset(*ditem, DCM_MappingResource, MappingResource);
                 putStringValueToDataset(*ditem, DCM_MappingResourceUID, MappingResourceUID, OFFalse /*allowEmpty*/);
@@ -982,7 +1024,7 @@ OFCondition DSRDocumentTreeNode::readContentSequence(DcmItem &dataset,
             /* increment the counter (needed for generating the location string) */
             i++;
         }
-        /* skipping complete sub-tree if flag is set */
+        /* skipping complete subtree if flag is set */
         if (result.bad() && (flags & RF_skipInvalidContentItems))
         {
             printInvalidContentItemMessage("Skipping", node);
@@ -1010,39 +1052,35 @@ OFCondition DSRDocumentTreeNode::writeContentSequence(DcmItem &dataset,
             /* for all child nodes */
             do {
                 node = cursor.getNode();
-                if (node != NULL)
+                ditem = new DcmItem();
+                if (ditem != NULL)
                 {
-                    ditem = new DcmItem();
-                    if (ditem != NULL)
+                    /* write RelationshipType */
+                    result = putStringValueToDataset(*ditem, DCM_RelationshipType, relationshipTypeToDefinedTerm(node->getRelationshipType()));
+                    /* check for by-reference relationship */
+                    if (node->getValueType() == VT_byReference)
                     {
-                        /* write RelationshipType */
-                        result = putStringValueToDataset(*ditem, DCM_RelationshipType, relationshipTypeToDefinedTerm(node->getRelationshipType()));
-                        /* check for by-reference relationship */
-                        if (node->getValueType() == VT_byReference)
-                        {
-                            /* write ReferencedContentItemIdentifier */
-                            if (result.good())
-                                result = node->writeContentItem(*ditem);
-                        } else {    // by-value
-                            /* write RelationshipMacro */
-                            if (result.good())
-                                result = node->writeDocumentRelationshipMacro(*ditem, markedItems);
-                            /* write DocumentContentMacro */
-                            if (result.good())
-                                node->writeDocumentContentMacro(*ditem);
-                        }
-                        /* check for any errors */
-                        if (result.bad())
-                            printContentItemErrorMessage("Writing", result, node);
-                        /* insert item into sequence */
+                        /* write ReferencedContentItemIdentifier */
                         if (result.good())
-                            dseq->insert(ditem);
-                        else
-                            delete ditem;
-                    } else
-                        result = EC_MemoryExhausted;
+                            result = node->writeContentItem(*ditem);
+                    } else {    // by-value
+                        /* write RelationshipMacro */
+                        if (result.good())
+                            result = node->writeDocumentRelationshipMacro(*ditem, markedItems);
+                        /* write DocumentContentMacro */
+                        if (result.good())
+                            node->writeDocumentContentMacro(*ditem);
+                    }
+                    /* check for any errors */
+                    if (result.bad())
+                        printContentItemErrorMessage("Writing", result, node);
+                    /* insert item into sequence */
+                    if (result.good())
+                        dseq->insert(ditem);
+                    else
+                        delete ditem;
                 } else
-                    result = SR_EC_InvalidDocumentTree;
+                    result = EC_MemoryExhausted;
             } while (result.good() && cursor.gotoNext());
             if (result.good())
                 result = dataset.insert(dseq, OFTrue /*replaceOld*/);
@@ -1127,139 +1165,135 @@ OFCondition DSRDocumentTreeNode::renderHTMLChildNodes(STD_NAMESPACE ostream &doc
         /* for all child nodes */
         do {
             node = cursor.getNode();
-            if (node != NULL)
+            /* set/reset flag for footnote creation*/
+            newFlags &= ~HF_createFootnoteReferences;
+            if (!(flags & HF_renderItemsSeparately) && node->hasChildNodes() && (node->getValueType() != VT_Container))
+                newFlags |= HF_createFootnoteReferences;
+            /* render (optional) reference to annex */
+            OFString relationshipText;
+            if (!getRelationshipText(node->getRelationshipType(), relationshipText, flags).empty())
             {
-                /* set/reset flag for footnote creation*/
-                newFlags &= ~HF_createFootnoteReferences;
-                if (!(flags & HF_renderItemsSeparately) && node->hasChildNodes() && (node->getValueType() != VT_Container))
-                    newFlags |= HF_createFootnoteReferences;
-                /* render (optional) reference to annex */
-                OFString relationshipText;
-                if (!getRelationshipText(node->getRelationshipType(), relationshipText, flags).empty())
+                if (paragraphFlag)
                 {
-                    if (paragraphFlag)
+                    /* inside paragraph: line break */
+                    if (flags & HF_XHTML11Compatibility)
+                        docStream << "<br />" << OFendl;
+                    else
+                        docStream << "<br>" << OFendl;
+                } else {
+                    /* open paragraph */
+                    if (flags & HF_XHTML11Compatibility)
                     {
-                        /* inside paragraph: line break */
-                        if (flags & HF_XHTML11Compatibility)
-                            docStream << "<br />" << OFendl;
-                        else
-                            docStream << "<br>" << OFendl;
+                        docStream << "<div class=\"small\">" << OFendl;
+                        docStream << "<p>" << OFendl;
                     } else {
-                        /* open paragraph */
-                        if (flags & HF_XHTML11Compatibility)
-                        {
-                            docStream << "<div class=\"small\">" << OFendl;
-                            docStream << "<p>" << OFendl;
-                        } else {
-                            docStream << "<p>" << OFendl;
-                            docStream << "<small>" << OFendl;
-                        }
-                        paragraphFlag = OFTrue;
+                        docStream << "<p>" << OFendl;
+                        docStream << "<small>" << OFendl;
                     }
-                    if (newFlags & HF_XHTML11Compatibility)
-                        docStream << "<span class=\"relation\">" << relationshipText << "</span>: ";
-                    else if (flags & DSRTypes::HF_HTML32Compatibility)
-                        docStream << "<u>" << relationshipText << "</u>: ";
-                    else /* HTML 4.01 */
-                        docStream << "<span class=\"under\">" << relationshipText << "</span>: ";
-                    /* expand short nodes with no children inline (or depending on 'flags' all nodes) */
-                    if ((flags & HF_alwaysExpandChildrenInline) ||
-                        (!(flags & HF_neverExpandChildrenInline) && !node->hasChildNodes() && node->isShort(flags)))
+                    paragraphFlag = OFTrue;
+                }
+                if (newFlags & HF_XHTML11Compatibility)
+                    docStream << "<span class=\"relation\">" << relationshipText << "</span>: ";
+                else if (flags & DSRTypes::HF_HTML32Compatibility)
+                    docStream << "<u>" << relationshipText << "</u>: ";
+                else /* HTML 4.01 */
+                    docStream << "<span class=\"under\">" << relationshipText << "</span>: ";
+                /* expand short nodes with no children inline (or depending on 'flags' all nodes) */
+                if ((flags & HF_alwaysExpandChildrenInline) ||
+                    (!(flags & HF_neverExpandChildrenInline) && !node->hasChildNodes() && node->isShort(flags)))
+                {
+                    if (node->getValueType() != VT_byReference)
                     {
-                        if (node->getValueType() != VT_byReference)
-                        {
-                            /* render concept name/code or value type */
-                            if (node->getConceptName().getCodeMeaning().empty())
-                                docStream << valueTypeToReadableName(node->getValueType());
-                            else
-                                node->getConceptName().renderHTML(docStream, flags, (flags & HF_renderConceptNameCodes) && ConceptName.isValid() /*fullCode*/);
-                            docStream << " = ";
-                        }
-                        /* render HTML code (directly to the reference text) */
-                        result = node->renderHTML(docStream, annexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_renderItemInline);
-                    } else {
-                        /* render concept name or value type */
+                        /* render concept name/code or value type */
                         if (node->getConceptName().getCodeMeaning().empty())
-                            docStream << valueTypeToReadableName(node->getValueType()) << " ";
-                        else
-                            docStream << node->getConceptName().getCodeMeaning() << " ";
-                        /* render annex heading and reference */
-                        createHTMLAnnexEntry(docStream, annexStream, "" /*referenceText*/, annexNumber, newFlags);
-                        if (flags & HF_XHTML11Compatibility)
-                            annexStream << "<div class=\"para\">" << OFendl;
+                            docStream << valueTypeToReadableName(node->getValueType());
                         else
-                            annexStream << "<div>" << OFendl;
-                        /* create memory output stream for the temporal annex */
-                        OFOStringStream tempAnnexStream;
-                        /* render HTML code (directly to the annex) */
-                        result = node->renderHTML(annexStream, tempAnnexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_currentlyInsideAnnex);
-                        annexStream << "</div>" << OFendl;
-                        /* use empty paragraph for bottom margin */
-                        if (!(flags & HF_XHTML11Compatibility))
-                            annexStream << "<p>" << OFendl;
-                        /* append temporary stream to main stream */
-                        if (result.good())
-                            result = appendStream(annexStream, tempAnnexStream);
+                            node->getConceptName().renderHTML(docStream, flags, (flags & HF_renderConceptNameCodes) && ConceptName.isValid() /*fullCode*/);
+                        docStream << " = ";
                     }
+                    /* render HTML code (directly to the reference text) */
+                    result = node->renderHTML(docStream, annexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_renderItemInline);
                 } else {
-                    /* close paragraph */
-                    if (paragraphFlag)
+                    /* render concept name or value type */
+                    if (node->getConceptName().getCodeMeaning().empty())
+                        docStream << valueTypeToReadableName(node->getValueType()) << " ";
+                    else
+                        docStream << node->getConceptName().getCodeMeaning() << " ";
+                    /* render annex heading and reference */
+                    createHTMLAnnexEntry(docStream, annexStream, "" /*referenceText*/, annexNumber, newFlags);
+                    if (flags & HF_XHTML11Compatibility)
+                        annexStream << "<div class=\"para\">" << OFendl;
+                    else
+                        annexStream << "<div>" << OFendl;
+                    /* create memory output stream for the temporal annex */
+                    OFOStringStream tempAnnexStream;
+                    /* render HTML code (directly to the annex) */
+                    result = node->renderHTML(annexStream, tempAnnexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_currentlyInsideAnnex);
+                    annexStream << "</div>" << OFendl;
+                    /* use empty paragraph for bottom margin */
+                    if (!(flags & HF_XHTML11Compatibility))
+                        annexStream << "<p>" << OFendl;
+                    /* append temporary stream to main stream */
+                    if (result.good())
+                        result = appendStream(annexStream, tempAnnexStream);
+                }
+            } else {
+                /* close paragraph */
+                if (paragraphFlag)
+                {
+                    if (flags & HF_XHTML11Compatibility)
                     {
-                        if (flags & HF_XHTML11Compatibility)
-                        {
-                            docStream << "</p>" << OFendl;
-                            docStream << "</div>" << OFendl;
-                        } else {
-                            docStream << "</small>" << OFendl;
-                            docStream << "</p>" << OFendl;
-                        }
-                        paragraphFlag = OFFalse;
+                        docStream << "</p>" << OFendl;
+                        docStream << "</div>" << OFendl;
+                    } else {
+                        docStream << "</small>" << OFendl;
+                        docStream << "</p>" << OFendl;
                     }
-                    /* begin new paragraph */
-                    if (flags & HF_renderItemsSeparately)
+                    paragraphFlag = OFFalse;
+                }
+                /* begin new paragraph */
+                if (flags & HF_renderItemsSeparately)
+                {
+                    if (flags & HF_XHTML11Compatibility)
+                        docStream << "<div class=\"para\">" << OFendl;
+                    else
+                        docStream << "<div>" << OFendl;
+                }
+                /* write footnote text to temporary stream */
+                if (newFlags & HF_createFootnoteReferences)
+                {
+                    /* render HTML code (without child nodes) */
+                    result = node->renderHTMLContentItem(docStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
+                    /* create footnote numbers (individually for each child?) */
+                    if (result.good())
                     {
+                        /* tags are closed automatically in 'node->renderHTMLChildNodes()' */
                         if (flags & HF_XHTML11Compatibility)
-                            docStream << "<div class=\"para\">" << OFendl;
-                        else
-                            docStream << "<div>" << OFendl;
-                    }
-                    /* write footnote text to temporary stream */
-                    if (newFlags & HF_createFootnoteReferences)
-                    {
-                        /* render HTML code (without child nodes) */
-                        result = node->renderHTMLContentItem(docStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
-                        /* create footnote numbers (individually for each child?) */
-                        if (result.good())
                         {
-                            /* tags are closed automatically in 'node->renderHTMLChildNodes()' */
-                            if (flags & HF_XHTML11Compatibility)
-                            {
-                                tempDocStream << "<div class=\"small\">" << OFendl;
-                                tempDocStream << "<p>" << OFendl;
-                            } else {
-                                tempDocStream << "<p>" << OFendl;
-                                tempDocStream << "<small>" << OFendl;
-                            }
-                            /* render footnote text and reference */
-                            createHTMLFootnote(docStream, tempDocStream, footnoteNumber, node->getNodeID(), flags);
-                            /* render child nodes to temporary stream */
-                            result = node->renderHTMLChildNodes(tempDocStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
+                            tempDocStream << "<div class=\"small\">" << OFendl;
+                            tempDocStream << "<p>" << OFendl;
+                        } else {
+                            tempDocStream << "<p>" << OFendl;
+                            tempDocStream << "<small>" << OFendl;
                         }
-                    } else {
-                        /* render HTML code (incl. child nodes)*/
-                        result = node->renderHTML(docStream, annexStream, nestingLevel + 1, annexNumber, newFlags);
-                    }
-                    /* end paragraph */
-                    if (flags & HF_renderItemsSeparately)
-                    {
-                        docStream << "</div>" << OFendl;
-                        /* use empty paragraph for bottom margin */
-                        if (!(flags & HF_XHTML11Compatibility))
-                            docStream << "<p>" << OFendl;
+                        /* render footnote text and reference */
+                        createHTMLFootnote(docStream, tempDocStream, footnoteNumber, node->getNodeID(), flags);
+                        /* render child nodes to temporary stream */
+                        result = node->renderHTMLChildNodes(tempDocStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
                     }
+                } else {
+                    /* render HTML code (incl. child nodes)*/
+                    result = node->renderHTML(docStream, annexStream, nestingLevel + 1, annexNumber, newFlags);
                 }
-            } else
-                result = SR_EC_InvalidDocumentTree;
+                /* end paragraph */
+                if (flags & HF_renderItemsSeparately)
+                {
+                    docStream << "</div>" << OFendl;
+                    /* use empty paragraph for bottom margin */
+                    if (!(flags & HF_XHTML11Compatibility))
+                        docStream << "<p>" << OFendl;
+                }
+            }
         } while (result.good() && cursor.gotoNext());
         /* close last open paragraph (if any) */
         if (paragraphFlag)
index 05984d298b9363ecb0317bb0712d8d42bd20e6b4..db58d62ebcc9380007d08dd3bcded6b8d2b0b1c8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -80,6 +80,14 @@ OFBool DSRDocumentTree::isValid() const
 }
 
 
+OFCondition DSRDocumentTree::print(STD_NAMESPACE ostream &stream,
+                                   const size_t flags)
+{
+    /* call the inherited method (hide additional parameters) */
+    return DSRDocumentSubTree::print(stream, flags);
+}
+
+
 OFCondition DSRDocumentTree::read(DcmItem &dataset,
                                   const E_DocumentType documentType,
                                   const size_t flags)
@@ -136,6 +144,35 @@ OFCondition DSRDocumentTree::read(DcmItem &dataset,
 }
 
 
+OFCondition DSRDocumentTree::write(DcmItem &dataset,
+                                   DcmStack *markedItems)
+{
+    OFCondition result = SR_EC_InvalidDocumentTree;
+    /* check whether document tree is valid */
+    if (isValid())
+    {
+        /* check whether document tree contains any included templates */
+        if (isExpandedDocumentTree())
+        {
+            DSRDocumentTreeNode *node = getRoot();
+            if (node != NULL)
+            {
+                /* check and update by-reference relationships (if applicable) */
+                checkByReferenceRelationships(CM_updatePositionString);
+                /* update the document tree for output (if needed) */
+                updateTreeForOutput();
+                /* start writing from root node */
+                result = node->write(dataset, markedItems);
+            }
+        } else {
+            /* tbd: cannot write document with included templates */
+            result = SR_EC_CannotProcessIncludedTemplates;
+        }
+    }
+    return result;
+}
+
+
 OFCondition DSRDocumentTree::readXML(const DSRXMLDocument &doc,
                                      DSRXMLCursor cursor,
                                      const size_t flags)
@@ -202,70 +239,31 @@ OFCondition DSRDocumentTree::readXML(const DSRXMLDocument &doc,
 }
 
 
-OFCondition DSRDocumentTree::write(DcmItem &dataset,
-                                   DcmStack *markedItems)
-{
-    OFCondition result = SR_EC_InvalidDocumentTree;
-    /* check whether root node has correct relationship and value type */
-    if (isValid())
-    {
-        DSRDocumentTreeNode *node = getRoot();
-        if (node != NULL)
-        {
-            /* check and update by-reference relationships (if applicable) */
-            checkByReferenceRelationships(CM_updatePositionString);
-            /* update the document tree for output (if needed) */
-            updateTreeForOutput();
-            /* start writing from root node */
-            result = node->write(dataset, markedItems);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DSRDocumentTree::writeXML(STD_NAMESPACE ostream &stream,
-                                      const size_t flags)
-{
-    OFCondition result = SR_EC_InvalidDocumentTree;
-    /* check whether root node has correct relationship and value type */
-    if (isValid())
-    {
-        DSRDocumentTreeNode *node = getRoot();
-        /* start writing from root node */
-        if (node != NULL)
-        {
-            /* check by-reference relationships (if applicable) */
-            checkByReferenceRelationships(CM_resetReferenceTargetFlag);
-            /* update the document tree for output (if needed) */
-            updateTreeForOutput();
-            /* start writing from root node */
-            result = node->writeXML(stream, flags);
-        }
-    }
-    return result;
-}
-
-
 OFCondition DSRDocumentTree::renderHTML(STD_NAMESPACE ostream &docStream,
                                         STD_NAMESPACE ostream &annexStream,
                                         const size_t flags)
 {
     OFCondition result = SR_EC_InvalidDocumentTree;
-    /* check whether root node has correct relationship and value type */
+    /* check whether document tree is valid */
     if (isValid())
     {
-        DSRDocumentTreeNode *node = getRoot();
-        /* start rendering from root node */
-        if (node != NULL)
+        /* check whether document tree contains any included templates */
+        if (isExpandedDocumentTree())
         {
-            /* check by-reference relationships (if applicable) */
-            checkByReferenceRelationships(CM_resetReferenceTargetFlag);
-            /* update the document tree for output (if needed) */
-            updateTreeForOutput();
-            size_t annexNumber = 1;
-            /* start rendering from root node */
-            result = node->renderHTML(docStream, annexStream, 1 /*nestingLevel*/, annexNumber, flags & ~HF_internalUseOnly);
+            DSRDocumentTreeNode *node = getRoot();
+            if (node != NULL)
+            {
+                size_t annexNumber = 1;
+                /* check by-reference relationships (if applicable) */
+                checkByReferenceRelationships(CM_resetReferenceTargetFlag);
+                /* update the document tree for output (if needed) */
+                updateTreeForOutput();
+                /* start rendering from root node */
+                result = node->renderHTML(docStream, annexStream, 1 /*nestingLevel*/, annexNumber, flags & ~HF_internalUseOnly);
+            }
+        } else {
+            /* tbd: cannot render document with included templates */
+            result = SR_EC_CannotProcessIncludedTemplates;
         }
     }
     return result;
@@ -309,7 +307,7 @@ OFCondition DSRDocumentTree::changeDocumentType(const E_DocumentType documentTyp
 
 OFBool DSRDocumentTree::canAddContentItem(const E_RelationshipType relationshipType,
                                           const E_ValueType valueType,
-                                          const E_AddMode addMode)
+                                          const E_AddMode addMode) const
 {
     OFBool result = OFFalse;
     if (isEmpty())
@@ -326,9 +324,9 @@ OFBool DSRDocumentTree::canAddContentItem(const E_RelationshipType relationshipT
 }
 
 
-OFBool DSRDocumentTree::canInsertSubTree(DSRDocumentSubTree *tree,
+OFBool DSRDocumentTree::canInsertSubTree(const DSRDocumentSubTree *tree,
                                          const E_AddMode addMode,
-                                         const E_RelationshipType defaultRelType)
+                                         const E_RelationshipType defaultRelType) const
 {
     OFBool result = OFFalse;
     if (isEmpty())
@@ -356,8 +354,10 @@ OFCondition DSRDocumentTree::checkDocumentTreeConstraints(DSRIODConstraintChecke
             /* check whether the current document tree is valid, i.e. the root node is a container */
             if (isValid())
             {
-                /* determine template identifier (TID) expected for the new document type */
-                const OFString expectedTemplateIdentifier = OFSTRING_GUARD(checker->getRootTemplateIdentifier());
+                /* determine template identifier (TID) and mapping resource expected for the new document type */
+                OFString expectedTemplateIdentifier;
+                OFString expectedMappingResource;
+                checker->getRootTemplateIdentification(expectedTemplateIdentifier, expectedMappingResource);
                 /* check whether the expected template (if known) has been used */
                 if (!expectedTemplateIdentifier.empty())
                 {
@@ -372,16 +372,23 @@ OFCondition DSRDocumentTree::checkDocumentTreeConstraints(DSRIODConstraintChecke
                             /* check whether the correct Mapping Resource UID is used (if present) */
                             if (!mappingResourceUID.empty() && (mappingResourceUID != UID_DICOMContentMappingResource))
                             {
-                                DCMSR_WARN("Incorrect value for MappingResourceUID (" << mappingResourceUID << "), "
+                                DCMSR_WARN("Incorrect value for Mapping Resource UID (" << mappingResourceUID << "), "
                                     << UID_DICOMContentMappingResource << " expected");
                             }
-                            /* compare with expected TID */
-                            if (templateIdentifier != expectedTemplateIdentifier)
-                            {
-                                DCMSR_WARN("Incorrect value for TemplateIdentifier ("
-                                    << ((templateIdentifier.empty()) ? "<empty>" : templateIdentifier) << "), "
-                                    << expectedTemplateIdentifier << " expected");
-                            }
+                        }
+                        /* compare with expected mapping resource */
+                        if (mappingResource != expectedMappingResource)
+                        {
+                            DCMSR_WARN("Incorrect value for Mapping Resource ("
+                                << ((mappingResource.empty()) ? "<empty>" : mappingResource) << "), "
+                                << expectedMappingResource << " expected");
+                        }
+                        /* compare with expected template identifier */
+                        if (templateIdentifier != expectedTemplateIdentifier)
+                        {
+                            DCMSR_WARN("Incorrect value for Template Identifier ("
+                                << ((templateIdentifier.empty()) ? "<empty>" : templateIdentifier) << "), "
+                                << expectedTemplateIdentifier << " expected");
                         }
                     }
                 }
@@ -404,12 +411,9 @@ void DSRDocumentTree::unmarkAllContentItems()
     DSRDocumentTreeNodeCursor cursor(getRoot());
     if (cursor.isValid())
     {
-        DSRDocumentTreeNode *node = NULL;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                node->setMark(OFFalse);
+            cursor.getNode()->setMark(OFFalse);
         } while (cursor.iterate());
     }
 }
@@ -420,12 +424,9 @@ void DSRDocumentTree::removeSignatures()
     DSRDocumentTreeNodeCursor cursor(getRoot());
     if (cursor.isValid())
     {
-        DSRDocumentTreeNode *node = NULL;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                node->removeSignatures();
+            cursor.getNode()->removeSignatures();
         } while (cursor.iterate());
     }
 }
index cc93980db7ce150a50fbd1975666861234d7517f..ffa33eb13a5daa6c76e54d234fff095328693850 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSREnhancedSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSREnhancedSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSREnhancedSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                          OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -110,7 +113,7 @@ OFBool DSREnhancedSRConstraintChecker::checkContentRelationship(const E_ValueTyp
                      (targetValueType == VT_Waveform) || (targetValueType == VT_Composite) || (targetValueType == VT_SCoord) ||
                      (targetValueType == VT_TCoord);
         }
-        /* row 6 of the table - introduced with CP 1076 */
+        /* row 6 of the table - introduced with CP-1076 */
         else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
         {
             result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
index b66d65689d95b4706c847b2af1f5933674fd2648..26e0dfb25e20bdea7ca4e55c46249a056d35d522 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Sint32 DSRListOfItems<Sint32>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION
+const Sint32 DSRListOfItems<Sint32>::EmptyItem = 0;
 
 
 DSRImageFrameList::DSRImageFrameList()
index 7a42b57aba6bf6074848b46a176499c3687888fc..c5f2129ff3319aa2097f390724cb7962563376b5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Uint16 DSRListOfItems<Uint16>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION
+const Uint16 DSRListOfItems<Uint16>::EmptyItem = 0;
 
 
 DSRImageSegmentList::DSRImageSegmentList()
index f19bb0b9df1fc513db2abc907ecab4bd8e298b12..e65d200b1b4ed250a70e1fbb849572f3392f666d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -146,6 +146,12 @@ OFBool DSRImageReferenceValue::isShort(const size_t flags) const
 }
 
 
+OFBool DSRImageReferenceValue::isSegmentation() const
+{
+    return isSegmentationObject(SOPClassUID);
+}
+
+
 OFCondition DSRImageReferenceValue::print(STD_NAMESPACE ostream &stream,
                                           const size_t flags) const
 {
@@ -340,7 +346,7 @@ OFCondition DSRImageReferenceValue::readItem(DcmItem &dataset,
             }
         }
         /* check data and report warnings if any */
-        checkListData(FrameList, SegmentList, OFTrue /*reportWarnings*/);
+        checkListData(SOPClassUID, FrameList, SegmentList, OFTrue /*reportWarnings*/);
     }
     return result;
 }
@@ -397,7 +403,7 @@ OFCondition DSRImageReferenceValue::writeItem(DcmItem &dataset) const
         }
     }
     /* check data and report warnings if any */
-    checkListData(FrameList, SegmentList, OFTrue /*reportWarnings*/);
+    checkListData(SOPClassUID, FrameList, SegmentList, OFTrue /*reportWarnings*/);
     return result;
 }
 
@@ -650,14 +656,20 @@ OFBool DSRImageReferenceValue::appliesToSegment(const Uint16 segmentNumber) cons
 }
 
 
+OFBool DSRImageReferenceValue::isSegmentationObject(const OFString &sopClassUID) const
+{
+    /* check for all segmentation SOP classes (according to DICOM PS 3.6-2015c) */
+    return (sopClassUID == UID_SegmentationStorage) || (sopClassUID == UID_SurfaceSegmentationStorage);
+}
+
+
 OFCondition DSRImageReferenceValue::checkSOPClassUID(const OFString &sopClassUID) const
 {
     OFCondition result = DSRCompositeReferenceValue::checkSOPClassUID(sopClassUID);
     if (result.good())
     {
-        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2014a) */
-        if (!dcmIsImageStorageSOPClassUID(sopClassUID.c_str()) &&
-            (sopClassUID != UID_SegmentationStorage))
+        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2015c) */
+        if (!dcmIsImageStorageSOPClassUID(sopClassUID.c_str()) && !isSegmentationObject(sopClassUID))
         {
             result = SR_EC_InvalidValue;
         }
@@ -695,17 +707,25 @@ OFCondition DSRImageReferenceValue::checkRealWorldValueMapping(const DSRComposit
 // helper macro to avoid annoying check of boolean flag
 #define REPORT_WARNING(msg) { if (reportWarnings) DCMSR_WARN(msg); }
 
-OFCondition DSRImageReferenceValue::checkListData(const DSRImageFrameList &frameList,
+OFCondition DSRImageReferenceValue::checkListData(const OFString &sopClassUID,
+                                                  const DSRImageFrameList &frameList,
                                                   const DSRImageSegmentList &segmentList,
                                                   const OFBool reportWarnings) const
 {
     OFCondition result = EC_Normal;
+    /* check whether both lists of referenced frame and segment numbers are non-empty */
     if (!frameList.isEmpty() && !segmentList.isEmpty())
     {
         /* this is just a warning since only one list will ever be written */
-        REPORT_WARNING("Both ReferencedFrameNumber and ReferencedSegmentNumber present in IMAGE content item")
+        REPORT_WARNING("Both Referenced Frame Number and Referenced Segment Number present in IMAGE content item")
+    }
+    /* check whether referenced image is a segmentation object (see "type 1C" condition) */
+    if (!segmentList.isEmpty() && !isSegmentationObject(sopClassUID))
+    {
+        REPORT_WARNING("Referenced Segment Number present in IMAGE content item for non-segmentation object")
+        result = SR_EC_InvalidValue;
     }
-    /* tbd: check whether referenced image is a segmentation object? (see "type 1C" condition) */
+    /* tbd: check whether referenced image is a multi-frame image? (see "type 1C" condition) */
     return result;
 }
 
@@ -718,6 +738,6 @@ OFCondition DSRImageReferenceValue::checkCurrentValue() const
     if (result.good())
         result = checkRealWorldValueMapping(RealWorldValueMapping);
     if (result.good())
-        result = checkListData(FrameList, SegmentList);
+        result = checkListData(SOPClassUID, FrameList, SegmentList);
     return result;
 }
index 9515979a4cf92e6d9ec9f85ac588c8dcb065ac0e..92b944375ff279271b22157c4a33f9c659e0b0e4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRImplantationPlanSRDocumentConstraintChecker::isTemplateSupportRequired
 }
 
 
-const char *DSRImplantationPlanSRDocumentConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRImplantationPlanSRDocumentConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                          OFString &mappingResource) const
 {
-    return "7000";
+    templateIdentifier = "7000";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
@@ -66,7 +69,7 @@ OFBool DSRImplantationPlanSRDocumentConstraintChecker::checkContentRelationship(
                                                                                 const E_ValueType targetValueType,
                                                                                 const OFBool byReference) const
 {
-    /* the following code implements the constraints of table A.35.Y-2 in DICOM PS3.3 (Supplement 134) */
+    /* the following code implements the constraints of table A.35.12-2 in DICOM PS3.3 */
     OFBool result = OFFalse;
     /* by-reference relationships not allowed at all */
     if (!byReference)
index e3332b7ed145d7d063c7f850df74c76844f58bc8..59d5018e05eb4303ea4440ff27371eb31d7a1efc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRKeyObjectSelectionDocumentConstraintChecker::isTemplateSupportRequired
 }
 
 
-const char *DSRKeyObjectSelectionDocumentConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRKeyObjectSelectionDocumentConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                          OFString &mappingResource) const
 {
-    return "2010";
+    templateIdentifier = "2010";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
index fcdfca79ddb084ae65c63d82b0b130c3d48c20f3..aaca4f553ab9e4108f22936009bc739bebc00552 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRMacularGridThicknessAndVolumeReportConstraintChecker::isTemplateSuppor
 }
 
 
-const char *DSRMacularGridThicknessAndVolumeReportConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRMacularGridThicknessAndVolumeReportConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                                   OFString &mappingResource) const
 {
-    return "2100";
+    templateIdentifier = "2100";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
index ce62ae463f9449d03a29e1ab8e464d6fc8c4e929..8cc55b1a17d0f5edce90b22321fb9026faf221dd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRMammographyCadSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRMammographyCadSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRMammographyCadSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                OFString &mappingResource) const
 {
-    return "4000";
+    templateIdentifier = "4000";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
index d915895a39fc63ac8899527c0559246b56505178..ef1254230522e4bc059a65ef84fe060657d073a5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -54,6 +54,20 @@ DSRNumericMeasurementValue::DSRNumericMeasurementValue(const OFString &numericVa
 }
 
 
+DSRNumericMeasurementValue::DSRNumericMeasurementValue(const DSRCodedEntryValue &valueQualifier,
+                                                       const OFBool check)
+  : NumericValue(),
+    MeasurementUnit(),
+    ValueQualifier(),
+    FloatingPointValue(DCM_FloatingPointValue),
+    RationalNumeratorValue(DCM_RationalNumeratorValue),
+    RationalDenominatorValue(DCM_RationalDenominatorValue)
+{
+    /* use the set method for checking purposes */
+    setValue(valueQualifier, check);
+}
+
+
 DSRNumericMeasurementValue::DSRNumericMeasurementValue(const OFString &numericValue,
                                                        const DSRCodedEntryValue &measurementUnit,
                                                        const DSRCodedEntryValue &valueQualifier,
@@ -121,10 +135,18 @@ OFBool DSRNumericMeasurementValue::isValid() const
 
 OFBool DSRNumericMeasurementValue::isEmpty() const
 {
+    /* the NumericValueQualifierCodeSequence is not checked */
     return NumericValue.empty() && MeasurementUnit.isEmpty();
 }
 
 
+OFBool DSRNumericMeasurementValue::isComplete() const
+{
+    /* officially, the NumericValueQualifierCodeSequence is optional (type 3) */
+    return (!NumericValue.empty() && MeasurementUnit.isComplete()) || ValueQualifier.isComplete();
+}
+
+
 OFCondition DSRNumericMeasurementValue::print(STD_NAMESPACE ostream &stream,
                                               const size_t flags) const
 {
@@ -132,6 +154,12 @@ OFCondition DSRNumericMeasurementValue::print(STD_NAMESPACE ostream &stream,
     {
         /* empty value */
         stream << "empty";
+        /* check for optional numeric value qualifier */
+        if (!ValueQualifier.isEmpty())
+        {
+            stream << " ";
+            ValueQualifier.print(stream, OFTrue /*printCodeValue*/, flags);
+        }
     } else {
         OFString printString;
         stream << "\"" << DSRTypes::convertToPrintString(NumericValue, printString) << "\" ";
@@ -471,6 +499,15 @@ OFCondition DSRNumericMeasurementValue::setValue(const OFString &numericValue,
 }
 
 
+OFCondition DSRNumericMeasurementValue::setValue(const DSRCodedEntryValue &valueQualifier,
+                                                 const OFBool check)
+{
+    const DSRCodedEntryValue measurementUnit;
+    /* call the function doing the real work */
+    return setValue("" /*numericValue*/, measurementUnit, valueQualifier, check);
+}
+
+
 OFCondition DSRNumericMeasurementValue::setValue(const OFString &numericValue,
                                                  const DSRCodedEntryValue &measurementUnit,
                                                  const DSRCodedEntryValue &valueQualifier,
@@ -639,7 +676,7 @@ void DSRNumericMeasurementValue::removeRationalRepresentation()
 
 OFCondition DSRNumericMeasurementValue::checkNumericValue(const OFString &numericValue) const
 {
-    /* numeric measurement value should never be empty */
+    /* numeric value should never be empty */
     return numericValue.empty() ? SR_EC_InvalidValue
                                 : DcmDecimalString::checkStringValue(numericValue, "1");
 }
@@ -689,3 +726,13 @@ OFCondition DSRNumericMeasurementValue::checkCurrentValue() const
     }
     return result;
 }
+
+
+// output operators
+
+STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                  const DSRNumericMeasurementValue &numericMeasurement)
+{
+    numericMeasurement.print(stream, 0 /*flags*/);
+    return stream;
+}
diff --git a/dcmsr/libsrc/dsrposcn.cc b/dcmsr/libsrc/dsrposcn.cc
new file mode 100644 (file)
index 0000000..7130e50
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRPositionCounter
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrposcn.h"
+#include "dcmtk/dcmsr/dsrtypes.h"
+
+
+DSRPositionCounter::DSRPositionCounter()
+  : Position(0),
+    PositionList()
+{
+}
+
+
+DSRPositionCounter::DSRPositionCounter(const DSRPositionCounter &counter)
+  : Position(counter.Position),
+    PositionList(counter.PositionList)
+{
+}
+
+
+DSRPositionCounter::~DSRPositionCounter()
+{
+}
+
+
+DSRPositionCounter &DSRPositionCounter::operator=(const DSRPositionCounter &counter)
+{
+    Position = counter.Position;
+    PositionList = counter.PositionList;
+    return *this;
+}
+
+
+void DSRPositionCounter::clear()
+{
+    /* clear and invalidate position counter */
+    Position = 0;
+    PositionList.clear();
+}
+
+
+void DSRPositionCounter::initialize(const OFBool valid)
+{
+    /* distinguish valid from non-valid position counter */
+    Position = (valid ? 1 : 0);
+    PositionList.clear();
+}
+
+
+OFBool DSRPositionCounter::goUp()
+{
+    const OFBool result = !PositionList.empty();
+    if (result)
+    {
+        /* get back last position on next upper level (if any) */
+        Position = PositionList.back();
+        PositionList.pop_back();
+    }
+    return result;
+}
+
+
+OFBool DSRPositionCounter::goDown()
+{
+    const OFBool result = (Position > 0);
+    if (result)
+    {
+        /* store current position and reset counter for next lower level */
+        PositionList.push_back(Position);
+        Position = 1;
+    }
+    return result;
+}
+
+
+const OFString &DSRPositionCounter::getString(OFString &position,
+                                              const char separator) const
+{
+    position.clear();
+    if (isValid())
+    {
+        char stringBuf[20];
+        const OFListConstIterator(size_t) endPos = PositionList.end();
+        OFListConstIterator(size_t) iterator = PositionList.begin();
+        /* iterate over all levels and append current position in each case */
+        while (iterator != endPos)
+        {
+            if (!position.empty())
+                position += separator;
+            position += DSRTypes::numberToString(*iterator, stringBuf);
+            iterator++;
+        }
+        /* also append the current position on the current level */
+        if (!position.empty())
+            position += separator;
+        position += DSRTypes::numberToString(Position, stringBuf);
+    }
+    return position;
+}
index 4af54af8fb45d240c55f484f7d4f66338bc52035..ae226349231b7e2d9ed6119df9b5191a0cf34405 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -45,13 +45,16 @@ OFBool DSRProcedureLogConstraintChecker::isByReferenceAllowed() const
 
 OFBool DSRProcedureLogConstraintChecker::isTemplateSupportRequired() const
 {
-    return OFTrue;
+    return OFFalse;
 }
 
 
-const char *DSRProcedureLogConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRProcedureLogConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                            OFString &mappingResource) const
 {
-    return "3001";
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
index c48574c84e7f054fb88ceb46c7d6a6880c463dad..9ee262c15dda50a05489006452ef3b4202b3d7f5 100644 (file)
@@ -49,9 +49,12 @@ OFBool DSRRadiopharmaceuticalRadiationDoseConstraintChecker::isTemplateSupportRe
 }
 
 
-const char *DSRRadiopharmaceuticalRadiationDoseConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRRadiopharmaceuticalRadiationDoseConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                                OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
index a5fe7975dc7fbaf015fea040c12f1ebf4db46052..19405d798721b383da19b54b1eee5757a939cbac 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -70,7 +70,9 @@ DSRDocumentTree *DSRRootTemplate::cloneTree() const
 
 void DSRRootTemplate::clear()
 {
+    /* call clear() method of base classes */
     DSRDocumentTree::clear();
+    DSRTemplateCommon::clear();
 }
 
 
index 5bc7550da92610e1f2413f23134542cb5c0ae0ea..b1d935ca036db9943e272f3581b44cfff7f42030 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2015, OFFIS e.V.
+ *  Copyright (C) 2010-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/dcmsr/dsrsc3gr.h"
 #include "dcmtk/ofstd/ofstd.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const DSRGraphicData3DItem DSRListOfItems<DSRGraphicData3DItem>::EmptyItem(0, 0, 0);
+DCMTK_EXPLICIT_SPECIALIZATION
+const DSRGraphicData3DItem DSRListOfItems<DSRGraphicData3DItem>::EmptyItem(0, 0, 0);
 
 
 DSRGraphicData3DList::DSRGraphicData3DList()
index e093f4a91396292d7e0ac5de07f47c15baa0bc18..55f67b63d94e3df4ab1e541c84cde37c10e809f0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2015, OFFIS e.V.
+ *  Copyright (C) 2010-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -326,9 +326,9 @@ OFCondition DSRSpatialCoordinates3DValue::checkGraphicData(const DSRTypes::E_Gra
     OFCondition result = SR_EC_InvalidValue;
     // check graphic type and data
     if (graphicType == DSRTypes::GT3_invalid)
-        REPORT_WARNING("Invalid GraphicType for SCOORD3D content item")
+        REPORT_WARNING("Invalid Graphic Type for SCOORD3D content item")
     else if (graphicDataList.isEmpty())
-        REPORT_WARNING("No GraphicData for SCOORD3D content item")
+        REPORT_WARNING("No Graphic Data for SCOORD3D content item")
     else
     {
         const size_t count = graphicDataList.getNumberOfItems();
@@ -336,46 +336,46 @@ OFCondition DSRSpatialCoordinates3DValue::checkGraphicData(const DSRTypes::E_Gra
         {
             case DSRTypes::GT3_Point:
                 if (count > 1)
-                    REPORT_WARNING("GraphicData has too many entries, only a single entry expected")
+                    REPORT_WARNING("Graphic Data has too many entries, only a single entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT3_Multipoint:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT3_Polyline:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT3_Polygon:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 else
                 {
                     if (graphicDataList.getItem(1) != graphicDataList.getItem(count))
-                        REPORT_WARNING("First and last entry in GraphicData are not equal (POLYGON)")
+                        REPORT_WARNING("First and last entry in Graphic Data are not equal (POLYGON)")
                     result = EC_Normal;
                 }
                 break;
             case DSRTypes::GT3_Ellipse:
                 if (count < 4)
-                    REPORT_WARNING("GraphicData has too few entries, exactly four entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly four entries expected")
                 else
                 {
                     if (count > 4)
-                        REPORT_WARNING("GraphicData has too many entries, exactly four entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly four entries expected")
                     result = EC_Normal;
                 }
                 break;
             case DSRTypes::GT3_Ellipsoid:
                 if (count < 6)
-                    REPORT_WARNING("GraphicData has too few entries, exactly six entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly six entries expected")
                 else
                 {
                     if (count > 6)
-                        REPORT_WARNING("GraphicData has too many entries, exactly six entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly six entries expected")
                     result = EC_Normal;
                 }
                 break;
index 585c4df2ffcb641c7c2cafb84e0a2fceca2fd744..b79edef94250f0bb1f3d42b1f807acf9c0b2df1b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/dcmsr/dsrscogr.h"
 #include "dcmtk/ofstd/ofstd.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const DSRGraphicDataItem DSRListOfItems<DSRGraphicDataItem>::EmptyItem(0, 0);
+DCMTK_EXPLICIT_SPECIALIZATION
+const DSRGraphicDataItem DSRListOfItems<DSRGraphicDataItem>::EmptyItem(0, 0);
 
 
 DSRGraphicDataList::DSRGraphicDataList()
index e41230aa3d5a16bd5df93eb51d20f9076153847c..0bc37e1c392cd86d248b8a7ef8d5dd79597d37f4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -289,9 +289,9 @@ OFCondition DSRSpatialCoordinatesValue::checkGraphicData(const DSRTypes::E_Graph
     OFCondition result = SR_EC_InvalidValue;
     // check graphic type and data
     if (graphicType == DSRTypes::GT_invalid)
-        REPORT_WARNING("Invalid GraphicType for SCOORD content item")
+        REPORT_WARNING("Invalid Graphic Type for SCOORD content item")
     else if (graphicDataList.isEmpty())
-        REPORT_WARNING("No GraphicData for SCOORD content item")
+        REPORT_WARNING("No Graphic Data for SCOORD content item")
     else
     {
         const size_t count = graphicDataList.getNumberOfItems();
@@ -299,39 +299,39 @@ OFCondition DSRSpatialCoordinatesValue::checkGraphicData(const DSRTypes::E_Graph
         {
             case DSRTypes::GT_Point:
                 if (count > 1)
-                    REPORT_WARNING("GraphicData has too many entries, only a single entry expected")
+                    REPORT_WARNING("Graphic Data has too many entries, only a single entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT_Multipoint:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT_Polyline:
 /*
                 // not required any more according to CP-233
                 if (graphicDataList.getItem(1) != graphicDataList.getItem(count))
-                    REPORT_WARNING("First and last entry in GraphicData are not equal (POLYLINE)")
+                    REPORT_WARNING("First and last entry in Graphic Data are not equal (POLYLINE)")
 */
                 result = EC_Normal;
                 break;
             case DSRTypes::GT_Circle:
                 if (count < 2)
-                    REPORT_WARNING("GraphicData has too few entries, exactly two entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly two entries expected")
                 else
                 {
                     if (count > 2)
-                        REPORT_WARNING("GraphicData has too many entries, exactly two entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly two entries expected")
                     result = EC_Normal;
                 }
                 break;
             case DSRTypes::GT_Ellipse:
                 if (count < 4)
-                    REPORT_WARNING("GraphicData has too few entries, exactly four entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly four entries expected")
                 else
                 {
                     if (count > 4)
-                        REPORT_WARNING("GraphicData has too many entries, exactly four entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly four entries expected")
                     result = EC_Normal;
                 }
                 break;
index 9bd223bbc100f3f8bc50deb12c0c6ab2106791bd..3b21aa151509d5e4f3f00756a2514780742ea16e 100644 (file)
@@ -1319,6 +1319,21 @@ const OFString &DSRSOPInstanceReferenceList::getSOPClassUID(OFString &stringValu
 }
 
 
+const OFString &DSRSOPInstanceReferenceList::getSOPClassName(OFString &stringValue,
+                                                             const OFString &defaultName) const
+{
+    OFString sopClassUID;
+    /* retrieve SOP class UID of current entry */
+    if (!getSOPClassUID(sopClassUID).empty())
+    {
+        /* lookup name associated with the SOP class UID */
+        stringValue = dcmFindNameOfUID(sopClassUID.c_str(), defaultName.c_str());
+    } else
+        stringValue.clear();
+    return stringValue;
+}
+
+
 const OFString &DSRSOPInstanceReferenceList::getRetrieveAETitle(OFString &stringValue) const
 {
     /* check whether current series is valid */
index f2ec11f537a411c90b0e12c20a7207647afa4b3c..5c5d771419c8e44d91505615a3dacfc2b073f2a3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRSpectaclePrescriptionReportConstraintChecker::isTemplateSupportRequire
 }
 
 
-const char *DSRSpectaclePrescriptionReportConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRSpectaclePrescriptionReportConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                           OFString &mappingResource) const
 {
-    return "2020";
+    templateIdentifier = "2020";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
index 4dae6194f02c8d328e92eea62a48082f1b8e9fcd..16417f0d586768f81eb3e95010898287c85f6298 100644 (file)
@@ -67,7 +67,9 @@ DSRDocumentSubTree *DSRSubTemplate::cloneTree() const
 
 void DSRSubTemplate::clear()
 {
+    /* call clear() method of base classes */
     DSRDocumentSubTree::clear();
+    DSRTemplateCommon::clear();
 }
 
 
index c0eee4ae1ffff84b34a292d55677093e2da08c63..24faf45238221d7d0e99fe21594f46f8b55ab552 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 
 #include "dcmtk/dcmsr/dsrtcodt.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const OFString DSRListOfItems<OFString>::EmptyItem;
+DCMTK_EXPLICIT_SPECIALIZATION
+const OFString DSRListOfItems<OFString>::EmptyItem;
 
 
 DSRReferencedDateTimeList::DSRReferencedDateTimeList()
index 85f31d132dff903116bf66400a7810eea5ee4dab..970060bb93cba12bc9568621b2e1221bad6f3820 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Uint32 DSRListOfItems<Uint32>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION
+const Uint32 DSRListOfItems<Uint32>::EmptyItem = 0;
 
 
 DSRReferencedSamplePositionList::DSRReferencedSamplePositionList()
index c5bf47c5a3f7ec2946e2802441160f5ef6ecb495..e344336006755fa3b84e549b15bcfb87cfc7d6fe 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Float64 DSRListOfItems<Float64>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION const Float64 DSRListOfItems<Float64>::EmptyItem = 0;
 
 
 DSRReferencedTimeOffsetList::DSRReferencedTimeOffsetList()
index c49c0ddebf97fbd52f4c170221e49748a875381f..e2c8c09e7ad72acaf9fe086032fbe4a513d52458 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -336,21 +336,21 @@ OFCondition DSRTemporalCoordinatesValue::checkData(const DSRTypes::E_TemporalRan
 {
     OFCondition result = EC_Normal;
     if (temporalRangeType == DSRTypes::TRT_invalid)
-        REPORT_WARNING("Invalid TemporalRangeType for TCOORD content item")
+        REPORT_WARNING("Invalid Temporal Range Type for TCOORD content item")
     const OFBool list1 = !samplePositionList.isEmpty();
     const OFBool list2 = !timeOffsetList.isEmpty();
     const OFBool list3 = !dateTimeList.isEmpty();
     if (list1 && list2 && list3)
-        REPORT_WARNING("ReferencedSamplePositions/TimeOffsets/DateTime present in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/Time Offsets/DateTime present in TCOORD content item")
     else if (list1 && list2)
-        REPORT_WARNING("ReferencedSamplePositions/TimeOffsets present in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/Time Offsets present in TCOORD content item")
     else if (list1 && list3)
-        REPORT_WARNING("ReferencedSamplePositions/DateTime present in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/DateTime present in TCOORD content item")
     else if (list2 && list3)
-        REPORT_WARNING("ReferencedTimeOffsets/DateTime present in TCOORD content item")
+        REPORT_WARNING("Referenced Time Offsets/DateTime present in TCOORD content item")
     else if (!list1 && !list2 && !list3)
     {
-        REPORT_WARNING("ReferencedSamplePositions/TimeOffsets/DateTime empty in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/Time Offsets/DateTime empty in TCOORD content item")
         /* invalid: all lists are empty (type 1C condition violated) */
         result = SR_EC_InvalidValue;
     }
diff --git a/dcmsr/libsrc/dsrtncsr.cc b/dcmsr/libsrc/dsrtncsr.cc
deleted file mode 100644 (file)
index 6649d76..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *
- *  Copyright (C) 2000-2014, OFFIS e.V.
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  This software and supporting documentation were developed by
- *
- *    OFFIS e.V.
- *    R&D Division Health
- *    Escherweg 2
- *    D-26121 Oldenburg, Germany
- *
- *
- *  Module: dcmsr
- *
- *  Author: Joerg Riesmeier
- *
- *  Purpose:
- *    classes: DSRTreeNodeCursor
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
-
-#include "dcmtk/dcmsr/dsrtncsr.h"
-
-
-// NB: the implementation of the template class has been moved to the header file
diff --git a/dcmsr/libsrc/dsrtpltn.cc b/dcmsr/libsrc/dsrtpltn.cc
new file mode 100644 (file)
index 0000000..6fe60fa
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation are maintained by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmsr
+ *
+ *  Author: Joerg Riesmeier
+ *
+ *  Purpose:
+ *    classes: DSRIncludedTemplateTreeNode
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrtypes.h"
+#include "dcmtk/dcmsr/dsrtpltn.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
+#include "dcmtk/dcmsr/dsrxmld.h"
+
+
+DSRIncludedTemplateTreeNode::DSRIncludedTemplateTreeNode(const DSRSharedSubTemplate &referencedTemplate,
+                                                         const E_RelationshipType defaultRelType)
+  : DSRDocumentTreeNode(defaultRelType, VT_includedTemplate),
+    ReferencedTemplate(referencedTemplate)
+{
+    if (ReferencedTemplate)
+    {
+        /* store template identification of the referenced template */
+        DSRDocumentTreeNode::setTemplateIdentification(ReferencedTemplate->getTemplateIdentifier(),
+                                                       ReferencedTemplate->getMappingResource(),
+                                                       ReferencedTemplate->getMappingResourceUID());
+    }
+}
+
+
+DSRIncludedTemplateTreeNode::DSRIncludedTemplateTreeNode(const DSRIncludedTemplateTreeNode &node)
+  : DSRDocumentTreeNode(node),
+    ReferencedTemplate(node.ReferencedTemplate)
+{
+}
+
+
+DSRIncludedTemplateTreeNode::~DSRIncludedTemplateTreeNode()
+{
+}
+
+
+DSRIncludedTemplateTreeNode *DSRIncludedTemplateTreeNode::clone() const
+{
+    return new DSRIncludedTemplateTreeNode(*this);
+}
+
+
+void DSRIncludedTemplateTreeNode::clear()
+{
+    DSRDocumentTreeNode::clear();
+    ReferencedTemplate.reset();
+}
+
+
+OFBool DSRIncludedTemplateTreeNode::isValid() const
+{
+    return DSRDocumentTreeNode::isValid() && hasValidValue();
+}
+
+
+OFBool DSRIncludedTemplateTreeNode::hasValidValue() const
+{
+    /* check whether the reference to the included template is valid */
+    return ReferencedTemplate ? OFTrue : OFFalse;
+}
+
+
+OFBool DSRIncludedTemplateTreeNode::isShort(const size_t /*flags*/) const
+{
+    return !hasValidValue();
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::print(STD_NAMESPACE ostream &stream,
+                                               const size_t flags) const
+{
+    stream << "# INCLUDE ";
+    /* check whether template identification is set */
+    if (hasTemplateIdentification())
+    {
+        OFString templateIdentifier, mappingResource;
+        getTemplateIdentification(templateIdentifier, mappingResource);
+        stream << "TID " << templateIdentifier << " (" << mappingResource << ")";
+    } else {
+        /* no details on the template available */
+        stream << "<unknown template>";
+    }
+    /* check whether default relationship type is specified */
+    if (getRelationshipType() != RT_unknown)
+        stream << " with default relationship type " << relationshipTypeToDefinedTerm(getRelationshipType());
+    /* print annotation (optional) */
+    if (hasAnnotation() && (flags & PF_printAnnotation))
+        stream << "  \"" << getAnnotation().getText() << "\"";
+    return EC_Normal;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::writeXML(STD_NAMESPACE ostream &stream,
+                                                  const size_t flags) const
+{
+    OFCondition result = EC_Normal;
+    /* write content of included template in XML format (if non-empty) */
+    if (hasValidValue() && !ReferencedTemplate->isEmpty())
+    {
+        OFString templateIdentifier, mappingResource;
+        /* output details on beginning of included template (if enabled) */
+        if (hasTemplateIdentification() && (flags & XF_addCommentsForIncludedTemplate))
+        {
+            getTemplateIdentification(templateIdentifier, mappingResource);
+            stream << "<!-- BEGIN: included template TID " << templateIdentifier << " (" << mappingResource << ") -->" << OFendl;
+        }
+        /* write content of referenced document subtree */
+        result = ReferencedTemplate->writeXML(stream, flags);
+        /* output details on end of included template (if available, see above) */
+        if (!templateIdentifier.empty() && !mappingResource.empty())
+            stream << "<!-- END: included template TID " << templateIdentifier << " (" << mappingResource << ") -->" << OFendl;
+    }
+    return result;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setValue(const DSRSharedSubTemplate &referencedTemplate)
+{
+    ReferencedTemplate = referencedTemplate;
+    /* currently, no checks are performed */
+    return EC_Normal;
+}
+
+
+// protected methods
+
+OFCondition DSRIncludedTemplateTreeNode::read(DcmItem & /*dataset*/,
+                                              const DSRIODConstraintChecker * /*constraintChecker*/,
+                                              const size_t /*flags*/)
+{
+    /* invalid: cannot read document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::write(DcmItem & /*dataset*/,
+                                               DcmStack * /*markedItems*/)
+{
+    /* invalid: cannot write document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::readXML(const DSRXMLDocument & /*doc*/,
+                                                 DSRXMLCursor /*cursor*/,
+                                                 const E_DocumentType /*documentType*/,
+                                                 const size_t /*flags*/)
+{
+    /* invalid: cannot read document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::renderHTML(STD_NAMESPACE ostream & /*docStream*/,
+                                                    STD_NAMESPACE ostream & /*annexStream*/,
+                                                    const size_t /*nestingLevel*/,
+                                                    size_t & /*annexNumber*/,
+                                                    const size_t /*flags*/) const
+{
+    /* invalid: cannot render document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setConceptName(const DSRCodedEntryValue & /*conceptName*/,
+                                                        const OFBool /*check*/)
+{
+    /* invalid: no concept name allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationDateTime(const OFString & /*observationDateTime*/,
+                                                                const OFBool /*check*/)
+{
+    /* invalid: no observation date/time allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationDateTime(const DcmElement & /*delem*/,
+                                                                const unsigned long /*pos*/,
+                                                                const OFBool /*check*/)
+{
+    /* invalid: no observation date/time allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationDateTime(DcmItem & /*dataset*/,
+                                                                const DcmTagKey & /*tagKey*/,
+                                                                const unsigned long /*pos*/,
+                                                                const OFBool /*check*/)
+{
+    /* invalid: no observation date/time allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationUID(const OFString & /*observationUID*/,
+                                                           const OFBool /*check*/)
+{
+    /* invalid: no observation unique identifier allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setTemplateIdentification(const OFString & /*templateIdentifier*/,
+                                                                   const OFString & /*mappingResource*/,
+                                                                   const OFString & /*mappingResourceUID*/,
+                                                                   const OFBool /*check*/)
+{
+    /* invalid: no manual setting of template identification allowed */
+    return EC_IllegalCall;
+}
index e68801e3e366e629deba1590e002885d90c15d2c..106984827ab58e402b4e79c51b6f7f59b6a7640e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -54,6 +54,7 @@
 #include "dcmtk/dcmsr/dsrimpcc.h"
 #include "dcmtk/dcmsr/dsrc3dcc.h"
 #include "dcmtk/dcmsr/dsrrrdcc.h"
+#include "dcmtk/dcmsr/dsracqcc.h"
 
 #include "dcmtk/ofstd/ofstd.h"
 
@@ -121,6 +122,7 @@ const size_t DSRTypes::XF_useDcmsrNamespace              = 1 << 7;
 const size_t DSRTypes::XF_addSchemaReference             = 1 << 8;
 const size_t DSRTypes::XF_validateSchema                 = 1 << 9;
 const size_t DSRTypes::XF_templateElementEnclosesItems   = 1 << 10;
+const size_t DSRTypes::XF_addCommentsForIncludedTemplate = 1 << 11;
 /* shortcuts */
 const size_t DSRTypes::XF_encodeEverythingAsAttribute    = DSRTypes::XF_codeComponentsAsAttribute |
                                                            DSRTypes::XF_relationshipTypeAsAttribute |
@@ -141,6 +143,7 @@ const size_t DSRTypes::PF_printInvalidCodes              = 1 << 9;
 const size_t DSRTypes::PF_printNodeID                    = 1 << 10;
 const size_t DSRTypes::PF_indicateEnhancedEncodingMode   = 1 << 11;
 const size_t DSRTypes::PF_printAnnotation                = 1 << 12;
+const size_t DSRTypes::PF_hideIncludedTemplateNodes      = 1 << 13;
 /* shortcuts */
 const size_t DSRTypes::PF_printAllCodes                  = DSRTypes::PF_printConceptNameCodes;
 
@@ -286,6 +289,10 @@ makeOFConditionConst(SR_EC_NonExtensibleContextGroup,           OFM_dcmsr, 28, O
 makeOFConditionConst(SR_EC_CodedEntryNotInContextGroup,         OFM_dcmsr, 29, OF_error, "Coded Entry not in Context Group");
 makeOFConditionConst(SR_EC_CodedEntryInStandardContextGroup,    OFM_dcmsr, 30, OF_ok,    "Coded Entry in Context Group (Standard)");
 makeOFConditionConst(SR_EC_CodedEntryIsExtensionOfContextGroup, OFM_dcmsr, 31, OF_ok,    "Coded Entry in Context Group (Extension)");
+makeOFConditionConst(SR_EC_ValueSetConstraintViolated,          OFM_dcmsr, 32, OF_error, "Value Set Constraint violated");
+makeOFConditionConst(SR_EC_InvalidTemplateStructure,            OFM_dcmsr, 33, OF_error, "Invalid Template Structure");
+makeOFConditionConst(SR_EC_CannotProcessIncludedTemplates,      OFM_dcmsr, 34, OF_error, "Cannot process Document Tree with included Templates");
+
 
 // NOTE:
 // error codes 1000 and above are reserved for the submodule "cmr"
@@ -308,7 +315,8 @@ static const S_DocumentTypeNameMap DocumentTypeNameMap[] =
     {DSRTypes::DT_ImplantationPlanSRDocument,          UID_ImplantationPlanSRDocumentStorage,          OFTrue,  "SR", "Implantation Plan SR Document"},
     {DSRTypes::DT_Comprehensive3DSR,                   UID_Comprehensive3DSRStorage,                   OFFalse, "SR", "Comprehensive 3D SR"},
     {DSRTypes::DT_RadiopharmaceuticalRadiationDoseSR,  UID_RadiopharmaceuticalRadiationDoseSRStorage,  OFTrue,  "SR", "Radiopharmaceutical Radiation Dose SR"},
-    {DSRTypes::DT_ExtensibleSR,                        UID_ExtensibleSRStorage,                        OFTrue,  "SR", "Extensible SR"}
+    {DSRTypes::DT_ExtensibleSR,                        UID_ExtensibleSRStorage,                        OFTrue,  "SR", "Extensible SR"},
+    {DSRTypes::DT_AcquisitionContextSR,                UID_AcquisitionContextSRStorage,                OFTrue,  "SR", "Acquisition Context SR"}
 };
 
 
@@ -316,7 +324,7 @@ static const S_RelationshipTypeNameMap RelationshipTypeNameMap[] =
 {
     {DSRTypes::RT_invalid,       "",                "invalid relationship type"},
     {DSRTypes::RT_unknown,       "",                "unknown relationship type"},
-    {DSRTypes::RT_isRoot,        "",                ""},
+    {DSRTypes::RT_isRoot,        "",                "(is root)"},
     {DSRTypes::RT_contains,      "CONTAINS",        "contains"},
     {DSRTypes::RT_hasObsContext, "HAS OBS CONTEXT", "has obs context"},
     {DSRTypes::RT_hasAcqContext, "HAS ACQ CONTEXT", "has acq context"},
@@ -329,23 +337,24 @@ static const S_RelationshipTypeNameMap RelationshipTypeNameMap[] =
 
 static const S_ValueTypeNameMap ValueTypeNameMap[] =
 {
-    {DSRTypes::VT_invalid,     "",               "item",      "invalid/unknown value type"},
-    {DSRTypes::VT_Text,        "TEXT",           "text",      "Text"},
-    {DSRTypes::VT_Code,        "CODE",           "code",      "Code"},
-    {DSRTypes::VT_Num,         "NUM",            "num",       "Number"},
-    {DSRTypes::VT_DateTime,    "DATETIME",       "datetime",  "Date/Time"},
-    {DSRTypes::VT_Date,        "DATE",           "date",      "Date"},
-    {DSRTypes::VT_Time,        "TIME",           "time",      "Time"},
-    {DSRTypes::VT_UIDRef,      "UIDREF",         "uidref",    "UID Reference"},
-    {DSRTypes::VT_PName,       "PNAME",          "pname",     "Person Name"},
-    {DSRTypes::VT_SCoord,      "SCOORD",         "scoord",    "Spatial Coordinates"},
-    {DSRTypes::VT_SCoord3D,    "SCOORD3D",       "scoord3d",  "Spatial Coordinates (3D)"},
-    {DSRTypes::VT_TCoord,      "TCOORD",         "tcoord",    "Temporal Coordinates"},
-    {DSRTypes::VT_Composite,   "COMPOSITE",      "composite", "Composite Object"},
-    {DSRTypes::VT_Image,       "IMAGE",          "image",     "Image"},
-    {DSRTypes::VT_Waveform,    "WAVEFORM",       "waveform",  "Waveform"},
-    {DSRTypes::VT_Container,   "CONTAINER",      "container", "Container"},
-    {DSRTypes::VT_byReference, "(by-reference)", "reference", "(by-reference)"}
+    {DSRTypes::VT_invalid,          "",                "item",      "invalid/unknown value type"},
+    {DSRTypes::VT_Text,             "TEXT",            "text",      "Text"},
+    {DSRTypes::VT_Code,             "CODE",            "code",      "Code"},
+    {DSRTypes::VT_Num,              "NUM",             "num",       "Number"},
+    {DSRTypes::VT_DateTime,         "DATETIME",        "datetime",  "Date/Time"},
+    {DSRTypes::VT_Date,             "DATE",            "date",      "Date"},
+    {DSRTypes::VT_Time,             "TIME",            "time",      "Time"},
+    {DSRTypes::VT_UIDRef,           "UIDREF",          "uidref",    "UID Reference"},
+    {DSRTypes::VT_PName,            "PNAME",           "pname",     "Person Name"},
+    {DSRTypes::VT_SCoord,           "SCOORD",          "scoord",    "Spatial Coordinates"},
+    {DSRTypes::VT_SCoord3D,         "SCOORD3D",        "scoord3d",  "Spatial Coordinates (3D)"},
+    {DSRTypes::VT_TCoord,           "TCOORD",          "tcoord",    "Temporal Coordinates"},
+    {DSRTypes::VT_Composite,        "COMPOSITE",       "composite", "Composite Object"},
+    {DSRTypes::VT_Image,            "IMAGE",           "image",     "Image"},
+    {DSRTypes::VT_Waveform,         "WAVEFORM",        "waveform",  "Waveform"},
+    {DSRTypes::VT_Container,        "CONTAINER",       "container", "Container"},
+    {DSRTypes::VT_byReference,      "(by-reference)",  "reference", "(by-reference)"},
+    {DSRTypes::VT_includedTemplate, "(incl-template)", "template",  "(included template)"}
 };
 
 
@@ -431,21 +440,26 @@ static const S_VerificationFlagNameMap VerificationFlagNameMap[] =
 
 static const S_CharacterSetNameMap CharacterSetNameMap[] =
 {
-    // columns: enum, DICOM, HTML, XML (if "?" a warning is reported)
-    {DSRTypes::CS_invalid,  "",           "",           ""},
-    {DSRTypes::CS_ASCII,    "ISO_IR 6",   "",           "UTF-8"},   /* "ISO_IR 6" is only used for reading */
-    {DSRTypes::CS_Latin1,   "ISO_IR 100", "ISO-8859-1", "ISO-8859-1"},
-    {DSRTypes::CS_Latin2,   "ISO_IR 101", "ISO-8859-2", "ISO-8859-2"},
-    {DSRTypes::CS_Latin3,   "ISO_IR 109", "ISO-8859-3", "ISO-8859-3"},
-    {DSRTypes::CS_Latin4,   "ISO_IR 110", "ISO-8859-4", "ISO-8859-4"},
-    {DSRTypes::CS_Cyrillic, "ISO_IR 144", "ISO-8859-5", "ISO-8859-5"},
-    {DSRTypes::CS_Arabic,   "ISO_IR 127", "ISO-8859-6", "ISO-8859-6"},
-    {DSRTypes::CS_Greek,    "ISO_IR 126", "ISO-8859-7", "ISO-8859-7"},
-    {DSRTypes::CS_Hebrew,   "ISO_IR 138", "ISO-8859-8", "ISO-8859-8"},
-    {DSRTypes::CS_Latin5,   "ISO_IR 148", "ISO-8859-9", "ISO-8859-9"},
-    {DSRTypes::CS_Japanese, "ISO_IR 13",  "?",          "?"},  /* JIS_X0201 ? */
-    {DSRTypes::CS_Thai,     "ISO_IR 166", "?",          "?"},  /* TIS-620 ? */
-    {DSRTypes::CS_UTF8,     "ISO_IR 192", "UTF-8",      "UTF-8"}
+    // columns: enum, DICOM, HTML, XML (if "?" a warning is reported).
+    // This mapping is based on Table D-1 in DICOM PS 3.18 Annex D.
+    {DSRTypes::CS_invalid,        "",                               "",            ""},
+    {DSRTypes::CS_ASCII,          "ISO_IR 6",                       "",            "UTF-8"},   /* "ISO_IR 6" is only used for reading */
+    {DSRTypes::CS_Latin1,         "ISO_IR 100",                     "ISO-8859-1",  "ISO-8859-1"},
+    {DSRTypes::CS_Latin2,         "ISO_IR 101",                     "ISO-8859-2",  "ISO-8859-2"},
+    {DSRTypes::CS_Latin3,         "ISO_IR 109",                     "ISO-8859-3",  "ISO-8859-3"},
+    {DSRTypes::CS_Latin4,         "ISO_IR 110",                     "ISO-8859-4",  "ISO-8859-4"},
+    {DSRTypes::CS_Cyrillic,       "ISO_IR 144",                     "ISO-8859-5",  "ISO-8859-5"},
+    {DSRTypes::CS_Arabic,         "ISO_IR 127",                     "ISO-8859-6",  "ISO-8859-6"},
+    {DSRTypes::CS_Greek,          "ISO_IR 126",                     "ISO-8859-7",  "ISO-8859-7"},
+    {DSRTypes::CS_Hebrew,         "ISO_IR 138",                     "ISO-8859-8",  "ISO-8859-8"},
+    {DSRTypes::CS_Latin5,         "ISO_IR 148",                     "ISO-8859-9",  "ISO-8859-9"},
+    {DSRTypes::CS_Thai,           "ISO_IR 166",                     "TIS-620",     "TIS-620"},
+    {DSRTypes::CS_Japanese,       "ISO 2022 IR 13\\ISO 2022 IR 87", "ISO-2022-JP", "ISO-2022-JP"},
+    {DSRTypes::CS_Korean,         "ISO 2022 IR 6\\ISO 2022 IR 149", "ISO-2022-KR", "ISO-2022-KR"},
+    {DSRTypes::CS_ChineseISO,     "ISO 2022 IR 6\\ISO 2022 IR 58",  "ISO-2022-CN", "ISO-2022-CN"},
+    {DSRTypes::CS_ChineseGB18030, "GB18030",                        "GB18030",     "GB18030"},
+    {DSRTypes::CS_ChineseGBK,     "GBK",                            "GBK",         "GBK"},
+    {DSRTypes::CS_UTF8,           "ISO_IR 192",                     "UTF-8",       "UTF-8"}
 };
 
 
@@ -1421,6 +1435,9 @@ DSRIODConstraintChecker *DSRTypes::createIODConstraintChecker(const E_DocumentTy
         case DT_ExtensibleSR:
             /* not yet supported */
             break;
+        case DT_AcquisitionContextSR:
+            checker = new DSRAcquisitionContextConstraintChecker();
+            break;
         case DT_invalid:
             /* nothing to do */
             break;
@@ -1598,12 +1615,17 @@ OFBool DSRTypes::writeStringFromElementToXML(STD_NAMESPACE ostream &stream,
     {
         OFString tempString;
         stream << "<" << tagName << ">";
-        if (delem.getVR() == EVR_PN)        // special formatting for person names
+        /* special formatting for person names */
+        if (delem.getVR() == EVR_PN)
         {
             OFString xmlString;
+            /* use first element value only */
             stream << OFendl << dicomToXMLPersonName(getStringValueFromElement(delem, tempString), xmlString, writeEmptyValue) << OFendl;
-        } else
-            OFStandard::convertToMarkupStream(stream, getStringValueFromElement(delem, tempString), OFFalse /*convertNonASCII*/);
+        } else {
+            /* use all element values (1-n) */
+            getStringValueFromElement(delem, tempString, -1 /* all components */);
+            OFStandard::convertToMarkupStream(stream, tempString, OFFalse /*convertNonASCII*/);
+        }
         stream << "</" << tagName << ">" << OFendl;
         result = OFTrue;
     }
index b8e995412ac6d2a638695600b50500c0805789fe..60b6507cf6953752f2a82d49bd0755aa9135dece 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const DSRWaveformChannelItem DSRListOfItems<DSRWaveformChannelItem>::EmptyItem(0, 0);
+DCMTK_EXPLICIT_SPECIALIZATION
+const DSRWaveformChannelItem DSRListOfItems<DSRWaveformChannelItem>::EmptyItem(0, 0);
 
 
 DSRWaveformChannelList::DSRWaveformChannelList()
index 508f0c679d316ec31909d27ebe4a838c589e748c..4bad97d0562e59c508b43a594580bbf3a67b322d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -245,7 +245,7 @@ OFCondition DSRWaveformReferenceValue::checkSOPClassUID(const OFString &sopClass
     OFCondition result = DSRCompositeReferenceValue::checkSOPClassUID(sopClassUID);
     if (result.good())
     {
-        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2014a) */
+        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2015c) */
         if ((sopClassUID != UID_TwelveLeadECGWaveformStorage) &&
             (sopClassUID != UID_GeneralECGWaveformStorage) &&
             (sopClassUID != UID_AmbulatoryECGWaveformStorage) &&
index 45837c522e6cef3fbeabef627f35300996823967..e32945ae0d4aa2e9d4479964b6d562d4c9b1542d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2005-2014, OFFIS e.V.
+ *  Copyright (C) 2005-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRXRayRadiationDoseSRConstraintChecker::isTemplateSupportRequired() cons
 }
 
 
-const char *DSRXRayRadiationDoseSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRXRayRadiationDoseSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                   OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -113,7 +116,7 @@ OFBool DSRXRayRadiationDoseSRConstraintChecker::checkContentRelationship(const E
                      (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef)    || (targetValueType == VT_PName) ||
                      (targetValueType == VT_Image)    || (targetValueType == VT_Composite) || (targetValueType == VT_Container);
         }
-        /* row 7 of the table - introduced with CP 1076 */
+        /* row 7 of the table - introduced with CP-1076 */
         else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
         {
             result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
index 25e09a1e44d5e6ff8e5989a65d30a3340bc04f13..90a1413c7703c759fa500f2fced6a9860bcad921 100644 (file)
@@ -42,6 +42,8 @@ mkreport.o: mkreport.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -110,11 +112,12 @@ mkreport.o: mkreport.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -124,7 +127,8 @@ mkreport.o: mkreport.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -145,6 +149,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -187,6 +193,8 @@ tsrcmr.o: tsrcmr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -211,7 +219,8 @@ tsrcmr.o: tsrcmr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/logmacro.h \
  ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
  ../../oflog/include/dcmtk/oflog/tracelog.h \
- ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrdoc.h ../include/dcmtk/dcmsr/dsrdoctr.h \
+ ../include/dcmtk/dcmsr/dsrdocst.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -281,42 +290,56 @@ tsrcmr.o: tsrcmr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmsr/dsdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/codes/dcm.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
+ ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
+ ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
+ ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
+ ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
+ ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
+ ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
+ ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
+ ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/codes/dcm.h \
+ ../include/dcmtk/dcmsr/codes/srt.h ../include/dcmtk/dcmsr/codes/ucum.h \
  ../include/dcmtk/dcmsr/cmr/init.h ../include/dcmtk/dcmsr/cmr/define.h \
  ../include/dcmtk/dcmsr/cmr/logger.h ../include/dcmtk/dcmsr/cmr/cid29e.h \
  ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/cmr/cid42.h ../include/dcmtk/dcmsr/cmr/cid244e.h \
- ../include/dcmtk/dcmsr/cmr/cid244.h \
+ ../include/dcmtk/dcmsr/cmr/cid244.h ../include/dcmtk/dcmsr/cmr/cid4020.h \
  ../include/dcmtk/dcmsr/cmr/cid4031e.h \
  ../include/dcmtk/dcmsr/cmr/cid4031.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
  ../include/dcmtk/dcmsr/cmr/cid7445.h \
  ../include/dcmtk/dcmsr/cmr/cid10013e.h \
  ../include/dcmtk/dcmsr/cmr/cid10013.h \
  ../include/dcmtk/dcmsr/cmr/cid10033e.h \
  ../include/dcmtk/dcmsr/cmr/cid10033.h \
  ../include/dcmtk/dcmsr/cmr/tid1001.h ../include/dcmtk/dcmsr/dsrstpl.h \
- ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
- ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrscovl.h \
- ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
- ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
- ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
- ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtcoto.h \
- ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrimgvl.h \
- ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrimgse.h \
- ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrwavch.h \
- ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h \
  ../include/dcmtk/dcmsr/cmr/cid7453.h \
  ../include/dcmtk/dcmsr/cmr/tid1204.h \
  ../include/dcmtk/dcmsr/cmr/cid5000.h \
  ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/cmr/tid1500.h \
+ ../include/dcmtk/dcmsr/cmr/tid1411.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvlu.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h \
  ../include/dcmtk/dcmsr/cmr/tid1600.h \
- ../include/dcmtk/dcmsr/cmr/srnumvl.h
+ ../include/dcmtk/dcmsr/cmr/cid4021.h ../include/dcmtk/dcmsr/cmr/cid100.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7021.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h
 tsrcodvl.o: tsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -335,6 +358,8 @@ tsrcodvl.o: tsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -428,6 +453,7 @@ tsrcodvl.o: tsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h
@@ -449,6 +475,8 @@ tsrdoc.o: tsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -544,11 +572,12 @@ tsrdoc.o: tsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -558,7 +587,8 @@ tsrdoc.o: tsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h
 tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -579,6 +609,8 @@ tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -674,11 +706,12 @@ tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -688,9 +721,11 @@ tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
+ ../include/dcmtk/dcmsr/dsrtpltn.h ../include/dcmtk/dcmsr/dsrstpl.h \
  ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/dsrtextn.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h
 tsrnumvl.o: tsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -711,6 +746,8 @@ tsrnumvl.o: tsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -805,6 +842,7 @@ tsrnumvl.o: tsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -827,6 +865,8 @@ tsrtpl.o: tsrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -922,11 +962,12 @@ tsrtpl.o: tsrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -936,7 +977,8 @@ tsrtpl.o: tsrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../include/dcmtk/dcmsr/dsrstpl.h
@@ -958,6 +1000,8 @@ tsrtree.o: tsrtree.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -1051,7 +1095,8 @@ tsrtree.o: tsrtree.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h
index e672e53b66916ecdde13654d78ce698d9f4b8fda..b18703de6d8c0f3956c6d35047b6be03012ca83e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -531,7 +531,7 @@ static void generate_02(DSRDocument *doc, OFString &studyUID_01)
     doc->getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue("CODE_03", OFFIS_CODING_SCHEME_DESIGNATOR, "Treatment"));
     doc->getTree().getCurrentContentItem().setStringValue("The plan of treatment is as follows: 4500 rad, 15 treatment sessions, using 100 kV radiation.\nThe reason for treatment, expected acute reaction, and remote possibility of complication was discussed with this patient at some length, and he accepted therapy as outlined.");
 
-    // add additional information on UCUM coding scheme (UID from CP 372)
+    // add additional information on UCUM coding scheme (UID from CP-372)
     doc->getCodingSchemeIdentification().addItem("UCUM");
     doc->getCodingSchemeIdentification().setCodingSchemeUID("2.16.840.1.113883.6.8");
     doc->getCodingSchemeIdentification().setCodingSchemeName("Unified Code for Units of Measure");
index 465a51427a6b0c4b4c350b122a8fbf255fa1223a..5a8417aab16bfb587e1652d32477ff4a3bbd1714 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2015, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,8 @@ OFTEST_REGISTER(dcmsr_addTreeNode_2);
 OFTEST_REGISTER(dcmsr_addTreeNode_3);
 OFTEST_REGISTER(dcmsr_addTreeNode_4);
 OFTEST_REGISTER(dcmsr_addTreeNode_5);
+OFTEST_REGISTER(dcmsr_addTreeNode_6);
+OFTEST_REGISTER(dcmsr_replaceTreeNode);
 OFTEST_REGISTER(dcmsr_getPosition);
 OFTEST_REGISTER(dcmsr_countChildNodes);
 OFTEST_REGISTER(dcmsr_treeWithoutRoot);
@@ -37,7 +39,8 @@ OFTEST_REGISTER(dcmsr_cloneSubTree_1);
 OFTEST_REGISTER(dcmsr_cloneSubTree_2);
 OFTEST_REGISTER(dcmsr_extractSubTree);
 OFTEST_REGISTER(dcmsr_gotoAnnotatedTreeNode);
-OFTEST_REGISTER(dcmsr_addContentItem);
+OFTEST_REGISTER(dcmsr_addContentItem_1);
+OFTEST_REGISTER(dcmsr_addContentItem_2);
 OFTEST_REGISTER(dcmsr_copyContentItem);
 OFTEST_REGISTER(dcmsr_gotoNamedNode);
 OFTEST_REGISTER(dcmsr_gotoAnnotatedNode);
@@ -58,6 +61,10 @@ OFTEST_REGISTER(dcmsr_setDocumentTree);
 OFTEST_REGISTER(dcmsr_rootTemplate);
 OFTEST_REGISTER(dcmsr_subTemplate_1);
 OFTEST_REGISTER(dcmsr_subTemplate_2);
+OFTEST_REGISTER(dcmsr_createExpandedTree);
+OFTEST_REGISTER(dcmsr_templateWithByReferenceRelationship_1);
+OFTEST_REGISTER(dcmsr_templateWithByReferenceRelationship_2);
+OFTEST_REGISTER(dcmsr_validCompleteOrEmptyCode);
 OFTEST_REGISTER(dcmsr_setCodeValueType);
 OFTEST_REGISTER(dcmsr_determineCodeValueType);
 OFTEST_REGISTER(dcmsr_writeCodeSequence);
@@ -73,8 +80,11 @@ OFTEST_REGISTER(dcmsr_CID10013e_CTAcquisitionType);
 OFTEST_REGISTER(dcmsr_CID10033e_CTReconstructionAlgorithm);
 OFTEST_REGISTER(dcmsr_TID1001_ObservationContext);
 OFTEST_REGISTER(dcmsr_TID1204_LanguageOfContentItemAndDescendants);
+OFTEST_REGISTER(dcmsr_TID1500_MeasurementReport);
 OFTEST_REGISTER(dcmsr_TID1600_ImageLibrary);
 OFTEST_REGISTER(dcmsr_CMR_SRNumericMeasurementValue);
+OFTEST_REGISTER(dcmsr_CMR_SRNumericMeasurementValueWithUnits_baselineGroup);
+OFTEST_REGISTER(dcmsr_CMR_SRNumericMeasurementValueWithUnits_definedGroup);
 /* the following should be the last test case */
 OFTEST_REGISTER(dcmsr_cleanupContentMappingResource);
 OFTEST_MAIN("dcmsr")
index d64a5af7445e69170ac9406d500849b56c3fa7ae..267ea3a259f15b4cbce4a734395575014e0310d6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
 
 #include "dcmtk/ofstd/oftest.h"
 
+#include "dcmtk/dcmsr/dsrdoc.h"
 #include "dcmtk/dcmsr/dsrnumvl.h"
 #include "dcmtk/dcmsr/dsrnumtn.h"
 #include "dcmtk/dcmsr/codes/dcm.h"
+#include "dcmtk/dcmsr/codes/srt.h"
+#include "dcmtk/dcmsr/codes/ucum.h"
 #include "dcmtk/dcmsr/cmr/init.h"
 #include "dcmtk/dcmsr/cmr/logger.h"
 #include "dcmtk/dcmsr/cmr/cid29e.h"
 #include "dcmtk/dcmsr/cmr/cid42.h"
 #include "dcmtk/dcmsr/cmr/cid244e.h"
+#include "dcmtk/dcmsr/cmr/cid4020.h"
 #include "dcmtk/dcmsr/cmr/cid4031e.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
 #include "dcmtk/dcmsr/cmr/cid7445.h"
 #include "dcmtk/dcmsr/cmr/cid10013e.h"
 #include "dcmtk/dcmsr/cmr/cid10033e.h"
 #include "dcmtk/dcmsr/cmr/tid1001.h"
 #include "dcmtk/dcmsr/cmr/tid1204.h"
+#include "dcmtk/dcmsr/cmr/tid1500.h"
 #include "dcmtk/dcmsr/cmr/tid1600.h"
 #include "dcmtk/dcmsr/cmr/srnumvl.h"
+#include "dcmtk/dcmsr/cmr/srnumvlu.h"
 
 
 OFTEST(dcmsr_CID29e_AcquisitionModality)
@@ -94,12 +101,12 @@ OFTEST(dcmsr_CID4031e_CommonAnatomicRegions)
     DSRCodedEntryValue codedEntry = ctxGroup;
     OFCHECK(ctxGroup.hasSelectedValue());
     OFCHECK(ctxGroup.getSelectedValue() == codedEntry);
-    OFCHECK_EQUAL(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("ABDOMEN").getCodeMeaning(), "Abdomen");
-    OFCHECK_EQUAL(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("KNEE").getCodeMeaning(), "Knee");
-    OFCHECK_EQUAL(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("ZYGOMA").getCodeMeaning(), "Zygoma");
+    OFCHECK_EQUAL(CMR_CID4031e::mapBodyPartExamined("ABDOMEN").getCodeMeaning(), "Abdomen");
+    OFCHECK_EQUAL(CMR_CID4031e::mapBodyPartExamined("KNEE").getCodeMeaning(), "Knee");
+    OFCHECK_EQUAL(CMR_CID4031e::mapBodyPartExamined("ZYGOMA").getCodeMeaning(), "Zygoma");
     /* invalid/unknown defined terms */
-    OFCHECK(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("XYZ").isEmpty());
-    OFCHECK(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("").isEmpty());
+    OFCHECK(CMR_CID4031e::mapBodyPartExamined("XYZ").isEmpty());
+    OFCHECK(CMR_CID4031e::mapBodyPartExamined("").isEmpty());
     OFCHECK(ctxGroup.selectValue("XYZ").bad());
 }
 
@@ -109,24 +116,27 @@ OFTEST(dcmsr_CID7445_DeviceParticipatingRoles)
     CID7445_DeviceParticipatingRoles ctxGroup1;
     OFCHECK(!ctxGroup1.hasSelectedValue());
     OFCHECK(!ctxGroup1.hasCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")));
+    OFCHECK(!ctxGroup1.hasExtendedCodedEntries());
     /* add an extended code to the context group */
     OFCHECK(ctxGroup1.addCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")).good());
     OFCHECK(ctxGroup1.hasCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")));
     OFCHECK(ctxGroup1.findCodedEntry(CODE_DCM_Recording) == SR_EC_CodedEntryInStandardContextGroup);
     OFCHECK(ctxGroup1.findCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")) == SR_EC_CodedEntryIsExtensionOfContextGroup);
+    OFCHECK(ctxGroup1.hasExtendedCodedEntries());
     /* try again with a non-extensible context group */
     CID7445_DeviceParticipatingRoles ctxGroup2(DSRBasicCodedEntry("4711", "99TEST", "Some other test code"));
     ctxGroup2.setExtensible(OFFalse);
     OFCHECK(ctxGroup2.hasSelectedValue());
     OFCHECK(ctxGroup2.addCodedEntry(DSRBasicCodedEntry("4711", "99TEST", "Some other test code")).bad());
+    OFCHECK(!ctxGroup2.hasExtendedCodedEntries());
     /* check whether the currently selected code is valid */
     OFCHECK(ctxGroup2.checkSelectedValue(OFFalse /*definedContextGroup*/).good());
     OFCHECK(ctxGroup2.checkSelectedValue(OFTrue /*definedContextGroup*/).bad());
     /* select another value (by two different ways) */
     OFCHECK(ctxGroup2.selectValue(CODE_DCM_XRayReadingDevice).good());
-    OFCHECK(ctxGroup2.selectValue(CID7445_DeviceParticipatingRoles::IrradiatingDevice).good());
+    OFCHECK(ctxGroup2.selectValue(CMR_CID7445::IrradiatingDevice).good());
     /* and finally, check the static get() function */
-    DSRCodedEntryValue codeValue = CID7445_DeviceParticipatingRoles::getCodedEntry(CID7445_DeviceParticipatingRoles::Recording, OFTrue /*enhancedEncodingMode*/);
+    DSRCodedEntryValue codeValue = CMR_CID7445::getCodedEntry(CMR_CID7445::Recording, OFTrue /*enhancedEncodingMode*/);
     OFCHECK(codeValue == CODE_DCM_Recording);
     OFCHECK_EQUAL(codeValue.getContextIdentifier(), "7445");
     OFCHECK_EQUAL(codeValue.getMappingResource(), "DCMR");
@@ -135,20 +145,20 @@ OFTEST(dcmsr_CID7445_DeviceParticipatingRoles)
 
 OFTEST(dcmsr_CID10013e_CTAcquisitionType)
 {
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("SEQUENCED") == CODE_DCM_SequencedAcquisition);
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("CONSTANT_ANGLE") == CODE_DCM_ConstantAngleAcquisition);
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("FREE") == CODE_DCM_FreeAcquisition);
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("SEQUENCED") == CODE_DCM_SequencedAcquisition);
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("CONSTANT_ANGLE") == CODE_DCM_ConstantAngleAcquisition);
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("FREE") == CODE_DCM_FreeAcquisition);
     /* invalid/unknown defined terms */
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("XYZ").isEmpty());
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("XYZ").isEmpty());
 }
 
 
 OFTEST(dcmsr_CID10033e_CTReconstructionAlgorithm)
 {
-    OFCHECK(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm("FILTER_BACK_PROJ") == CODE_DCM_FilteredBackProjection);
-    OFCHECK(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm("ITERATIVE") == CODE_DCM_IterativeReconstruction);
+    OFCHECK(CMR_CID10033e::mapReconstructionAlgorithm("FILTER_BACK_PROJ") == CODE_DCM_FilteredBackProjection);
+    OFCHECK(CMR_CID10033e::mapReconstructionAlgorithm("ITERATIVE") == CODE_DCM_IterativeReconstruction);
     /* invalid/unknown defined terms */
-    OFCHECK(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm("XYZ").isEmpty());
+    OFCHECK(CMR_CID10033e::mapReconstructionAlgorithm("XYZ").isEmpty());
 }
 
 
@@ -156,12 +166,16 @@ OFTEST(dcmsr_TID1001_ObservationContext)
 {
     TID1001_ObservationContext obsContext;
     OFList<CID7445_DeviceParticipatingRoles> procRoles;
-    procRoles.push_back(CID7445_DeviceParticipatingRoles::IrradiatingDevice);
-    procRoles.push_back(CID7445_DeviceParticipatingRoles::Recording);
+    procRoles.push_back(CMR_CID7445::IrradiatingDevice);
+    procRoles.push_back(CMR_CID7445::Recording);
+    /* check template identification */
+    OFCHECK(obsContext.compareTemplateIdentication("1001", "DCMR"));
+    /* empty template is not valid */
+    OFCHECK(!obsContext.isValid());
     /* add person and device observers */
-    OFCHECK(obsContext.addPersonObserver("Doe^John", "", CID7452_OrganizationalRoles::Physician, CID7453_PerformingRoles::Referring).good());
     OFCHECK(obsContext.addDeviceObserver("1.2.4.5.6.7.8.9.0").good());
-    OFCHECK(obsContext.addDeviceObserver("007", "Some Name", "Some Manufacturer", "Some Model Name", "", "", procRoles, OFFalse /*check*/).good());
+    OFCHECK(obsContext.addPersonObserver("Doe^John", "", CMR_CID7452::Physician, CMR_CID7453::Referring).good());
+    OFCHECK(obsContext.addDeviceObserver("007", "Some Name", "Some Manufacturer", "Some Model Name", "", "", procRoles, "AETITLE", OFFalse /*check*/).good());
     OFCHECK(obsContext.addPersonObserver("Doe^Jane", "Some Organization").good());
     /* check some additions that should fail */
     OFCHECK(obsContext.addPersonObserver("").bad());
@@ -169,7 +183,7 @@ OFTEST(dcmsr_TID1001_ObservationContext)
     OFCHECK(obsContext.addDeviceObserver("01").bad());
     /* check whether all nodes are present */
     OFCHECK(obsContext.isValid());
-    OFCHECK_EQUAL(obsContext.countNodes(), 16);
+    OFCHECK_EQUAL(obsContext.countNodes(), 17);
     /* check whether annotations are as expected */
     OFCHECK(obsContext.gotoAnnotatedNode("TID 1004 - Row 1") > 0);
     OFCHECK(obsContext.gotoNextAnnotatedNode("TID 1004 - Row 1") > 0);
@@ -189,6 +203,10 @@ OFTEST(dcmsr_TID1001_ObservationContext)
 OFTEST(dcmsr_TID1204_LanguageOfContentItemAndDescendants)
 {
     TID1204_LanguageOfContentItemAndDescendants lang;
+    /* check template identification */
+    OFCHECK(lang.compareTemplateIdentication("1204", "DCMR"));
+    /* empty template is not valid */
+    OFCHECK(!lang.isValid());
     /* add language */
     OFCHECK(lang.setLanguage(CID5000_Languages::German_DE).good());
     OFCHECK(lang.isValid());
@@ -200,10 +218,141 @@ OFTEST(dcmsr_TID1204_LanguageOfContentItemAndDescendants)
 }
 
 
+OFTEST(dcmsr_TID1500_MeasurementReport)
+{
+    TID1500_MeasurementReport report(CMR_CID7021::ImagingMeasurementReport);
+    DSRCodedEntryValue title;
+    /* check initial settings */
+    OFCHECK(!report.isValid());
+    OFCHECK(report.getDocumentTitle(title).good());
+    OFCHECK(title == CODE_DCM_ImagingMeasurementReport);
+    OFCHECK(report.compareTemplateIdentication("1500", "DCMR"));
+    /* create a new report */
+    OFCHECK(report.createNewMeasurementReport(CMR_CID7021::PETMeasurementReport).good());
+    OFCHECK(report.getDocumentTitle(title).good());
+    OFCHECK(title == CODE_DCM_PETMeasurementReport);
+    /* set the language */
+    OFCHECK(report.setLanguage(CID5000_Languages::English).good());
+    /* set details on the observation context */
+    OFCHECK(report.getObservationContext().addPersonObserver("Doe^Jane", "Some Organization").good());
+    /* create new image library (only needed after clear) */
+    OFCHECK(report.getImageLibrary().createNewImageLibrary().good());
+    /* set two values for "procedure reported" */
+    OFCHECK(!report.isValid());
+    OFCHECK(!report.hasProcedureReported());
+    OFCHECK(report.addProcedureReported(CMR_CID100::PETWholeBody).good());
+    OFCHECK(report.addProcedureReported(DSRCodedEntryValue("4711", "99TEST", "Some other test code")).good());
+    OFCHECK(report.hasProcedureReported());
+    OFCHECK(report.isValid());
+    /* some further checks */
+    OFCHECK(report.hasImagingMeasurements());
+    OFCHECK(report.hasVolumetricROIMeasurements());
+    OFCHECK(!report.hasQualitativeEvaluations());
+    OFCHECK(!report.hasImagingMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(!report.hasVolumetricROIMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(!report.hasQualitativeEvaluations(OFTrue /*checkChildren*/));
+    /* add two further volumetric ROI measurements */
+    OFCHECK(report.addVolumetricROIMeasurements().good());
+    OFCHECK(report.addVolumetricROIMeasurements().good());
+    OFCHECK(!report.hasVolumetricROIMeasurements(OFTrue /*checkChildren*/));
+    /* fill volumetric ROI measurements with data */
+    TID1500_MeasurementReport::TID1411_Measurements &measurements = report.getVolumetricROIMeasurements();
+    OFCHECK(!measurements.isValid());
+    OFCHECK(measurements.compareTemplateIdentication("1411", "DCMR"));
+    OFCHECK(measurements.setTrackingIdentifier("aorta reference region").good());
+    OFCHECK(measurements.setTrackingUniqueIdentifier("1.2.3.4.5").good());
+    OFCHECK(measurements.setTrackingIdentifier("some reference region").good());
+    OFCHECK(measurements.setActivitySession("1").good());
+    OFCHECK(measurements.setTimePoint("1.1").good());
+    OFCHECK(measurements.setSourceSeriesForSegmentation("6.7.8.9.0").good());
+    OFCHECK(measurements.setFinding(DSRBasicCodedEntry("0815", "99TEST", "Some test code")).good());
+    OFCHECK(!measurements.isValid());
+    /* test two ways of adding a referenced segment */
+    DSRImageReferenceValue segment(UID_SegmentationStorage, "1.0.2.0.3.0");
+    segment.getSegmentList().addItem(1);
+    DcmDataset dataset;
+    DcmItem *ditem = NULL;
+    OFCHECK(dataset.putAndInsertString(DCM_SOPClassUID, UID_SurfaceSegmentationStorage).good());
+    OFCHECK(dataset.putAndInsertString(DCM_SOPInstanceUID, "99.0").good());
+    OFCHECK(dataset.findOrCreateSequenceItem(DCM_SegmentSequence, ditem).good());
+    if (ditem != NULL)
+    {
+        OFCHECK(ditem->putAndInsertUint16(DCM_SegmentNumber, 1).good());
+        OFCHECK(ditem->putAndInsertString(DCM_TrackingID, "blabla").good());
+        OFCHECK(ditem->putAndInsertString(DCM_TrackingUID, "1.2.3").good());
+    }
+    OFCHECK(measurements.setReferencedSegment(segment).good());
+    OFCHECK(measurements.setReferencedSegment(DSRImageReferenceValue(UID_SegmentationStorage, "1.0")).bad());
+    OFCHECK(measurements.setReferencedSegment(dataset, 1).good());
+    dataset.clear();
+    OFCHECK(dataset.putAndInsertString(DCM_SOPClassUID, UID_RealWorldValueMappingStorage).good());
+    OFCHECK(dataset.putAndInsertString(DCM_SOPInstanceUID, "99.9").good());
+    OFCHECK(measurements.setRealWorldValueMap(DSRCompositeReferenceValue(UID_RealWorldValueMappingStorage, "2.0.3.0.4.0")).good());
+    OFCHECK(measurements.setRealWorldValueMap(DSRCompositeReferenceValue(UID_CTImageStorage, "2.0")).bad());
+    OFCHECK(measurements.setRealWorldValueMap(dataset).good());
+    OFCHECK(measurements.setFindingSite(CODE_SRT_AorticArch).good());
+    OFCHECK(measurements.setMeasurementMethod(DSRCodedEntryValue(CODE_DCM_SUVBodyWeightCalculationMethod)).good());
+    OFCHECK(!measurements.isValid());
+    /* add two measurement values */
+    const CMR_TID1411_in_TID1500::MeasurementValue numVal1("99", CMR_CID7181::StandardizedUptakeValueBodyWeight);
+    const CMR_TID1411_in_TID1500::MeasurementValue numVal2(CMR_CID42::MeasurementFailure);
+    OFCHECK(measurements.addMeasurement(CMR_CID7469::SUVbw, numVal1, CMR_CID6147(), CMR_CID7464::Mean).good());
+    OFCHECK(measurements.addMeasurement(CMR_CID7469::SUVbw, numVal2, DSRCodedEntryValue("0815", "99TEST", "Some test code"), CMR_CID7464::Mode).good());
+    OFCHECK(measurements.isValid());
+    /* now, add some qualitative evaluations */
+    const DSRCodedEntryValue code("1234", "99TEST", "not bad");
+    OFCHECK(report.addQualitativeEvaluation(DSRBasicCodedEntry("0815", "99TEST", "Some test code"), code).good());
+    OFCHECK(report.addQualitativeEvaluation(DSRBasicCodedEntry("4711", "99TEST", "Some other test code"), "very good").good());
+    /* some final checks */
+    OFCHECK(report.isValid());
+    OFCHECK(report.hasImagingMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(report.hasVolumetricROIMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(report.hasQualitativeEvaluations(OFTrue /*checkChildren*/));
+
+    /* check number of content items (expected) */
+    OFCHECK_EQUAL(report.getTree().countNodes(), 13);
+    OFCHECK_EQUAL(report.getTree().countNodes(OFTrue /*searchIntoSubTemplates*/), 34);
+    OFCHECK_EQUAL(report.getTree().countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 28);
+    /* create an expanded version of the tree */
+    DSRDocumentSubTree *tree = NULL;
+    OFCHECK(report.getTree().createExpandedSubTree(tree).good());
+    /* and check whether all content items are there */
+    if (tree != NULL)
+    {
+        OFCHECK_EQUAL(tree->countNodes(), 28);
+        OFCHECK_EQUAL(tree->countNodes(OFTrue /*searchIntoSubTemplates*/), 28);
+        OFCHECK_EQUAL(tree->countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 28);
+        delete tree;
+    } else
+        OFCHECK_FAIL("could create expanded tree");
+
+    /* try to insert the root template into a document */
+    DSRDocument doc;
+    OFCHECK(!doc.isValid());
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_BasicTextSR);
+    OFCHECK(doc.setTreeFromRootTemplate(report, OFFalse /*expandTree*/).good());
+    OFCHECK(doc.isValid());
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
+    /* now, do the same with an expanded document tree */
+    OFCHECK(doc.setTreeFromRootTemplate(report, OFTrue  /*expandTree*/).good());
+    OFCHECK(doc.isValid());
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
+
+    /* output content of the tree (in debug mode only) */
+    if (DCM_dcmsrCmrLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+    {
+        report.print(COUT, DSRTypes::PF_printTemplateIdentification | DSRTypes::PF_printAllCodes | DSRTypes::PF_printSOPInstanceUID |
+                           DSRTypes::PF_printNodeID | DSRTypes::PF_printAnnotation | DSRTypes::PF_printLongSOPClassName);
+    }
+}
+
+
 OFTEST(dcmsr_TID1600_ImageLibrary)
 {
     TID1600_ImageLibrary library;
     DcmItem *item1, *item2;
+    /* check template identification */
+    OFCHECK(library.compareTemplateIdentication("1600", "DCMR"));
     /* create four image datasets */
     DcmDataset dataset1;
     OFCHECK(dataset1.putAndInsertString(DCM_SOPClassUID, UID_CTImageStorage).good());
@@ -263,26 +412,51 @@ OFTEST(dcmsr_TID1600_ImageLibrary)
             OFCHECK(DSRCodedEntryValue("4711b", "99TEST", "some even more strange modifier").writeSequenceItem(*item2, DCM_ViewModifierCodeSequence).good());
     }
     /* add two image groups */
+    OFCHECK(library.isValid());
+    OFCHECK(library.hasImageLibrary());
     OFCHECK(library.addImageGroup().good());
     OFCHECK(library.addImageEntry(dataset1).good());
     OFCHECK(library.addImageEntryDescriptors(dataset1).good());
     OFCHECK(library.addImageGroup().good());
     OFCHECK(library.addImageEntry(dataset2, TID1600_ImageLibrary::withAllDescriptors).good());
+    OFCHECK(library.setPETImageRadionuclide(CID4020_PETRadionuclide::_18_Fluorine).good());
+    OFCHECK(library.setPETImageRadiopharmaceuticalAgent(CID4021_PETRadiopharmaceutical::Fluorodeoxyglucose_F18).good());
+    OFCHECK(library.setPETImageRadiopharmaceuticalStartDateTime("20151212").good());
+    OFCHECK(library.setPETImageRadiopharmaceuticalVolume(DSRNumericMeasurementValue("99.9", CODE_UCUM_cm3)).good());
+    OFCHECK(library.setPETImageRadionuclideTotalDose(DSRNumericMeasurementValue("9999", CODE_UCUM_Bq)).good());
     OFCHECK(library.addImageEntry(dataset1, TID1600_ImageLibrary::withAllDescriptors).good());
+    OFCHECK(library.setPETImageRadionuclide(CID4020_PETRadionuclide::_18_Fluorine).bad());
     OFCHECK(library.addImageEntry(dataset3, TID1600_ImageLibrary::withoutDescriptors).good());
     OFCHECK(library.addImageEntry(dataset4, TID1600_ImageLibrary::withAllDescriptors).good());
     OFCHECK(library.addImageEntryDescriptors(dataset3).good());
+    /* check modality code of most recently added entry */
+    DSRCodedEntryValue modality;
+    OFCHECK(library.getImageEntryModality(modality).good());
+    OFCHECK(modality == CODE_DCM_DigitalRadiography);
     /* try to add another invocation of TID 1602 */
     OFCHECK(library.addImageEntryDescriptors(dataset4).bad());
     /* check number of expected content items */
-    OFCHECK_EQUAL(library.countNodes(), 58);
+    OFCHECK_EQUAL(library.countNodes(), 61);
 
     /* output content of the tree (in debug mode only) */
     if (DCM_dcmsrCmrLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
     {
         library.print(COUT, DSRTypes::PF_printTemplateIdentification | DSRTypes::PF_printAllCodes | DSRTypes::PF_printSOPInstanceUID |
-                            DSRTypes::PF_printNodeID | DSRTypes::PF_indicateEnhancedEncodingMode | DSRTypes::PF_printAnnotation);
+                            DSRTypes::PF_printNodeID | DSRTypes::PF_indicateEnhancedEncodingMode | DSRTypes::PF_printAnnotation |
+                            DSRTypes::PF_printLongSOPClassName);
     }
+
+    /* empty template is not valid */
+    library.clear();
+    OFCHECK(!library.isValid());
+    OFCHECK(!library.hasImageLibrary());
+    /* cannot add image group to empty template */
+    OFCHECK(library.addImageGroup().bad());
+    /* try again... */
+    OFCHECK(library.createNewImageLibrary().good());
+    OFCHECK(library.isValid());
+    OFCHECK(library.hasImageLibrary());
+    OFCHECK(library.addImageGroup().good());
 }
 
 
@@ -290,12 +464,14 @@ OFTEST(dcmsr_CMR_SRNumericMeasurementValue)
 {
     CMR_SRNumericMeasurementValue numValue;
     /* set coded entry from context group and check the value */
-    OFCHECK(numValue.setNumericValueQualifier(CID42_NumericValueQualifier(CID42_NumericValueQualifier::NotANumber)).good());
+    OFCHECK(numValue.setNumericValueQualifier(CID42_NumericValueQualifier(CMR_CID42::NotANumber, OFTrue /*enhancedEncodingMode*/)).good());
     OFCHECK(numValue.getNumericValueQualifier() == CODE_DCM_NotANumber);
+    OFCHECK(numValue.getNumericValueQualifier().usesEnhancedEncodingMode());
     OFCHECK(numValue.isValid());
     /* set coded entry from context group (using its type) and check the value */
-    OFCHECK(numValue.setNumericValueQualifier(CID42_NumericValueQualifier::ValueUnknown).good());
+    OFCHECK(numValue.setNumericValueQualifier(CMR_CID42::ValueUnknown).good());
     OFCHECK(numValue.getNumericValueQualifier() == CODE_DCM_ValueUnknown);
+    OFCHECK(!numValue.getNumericValueQualifier().usesEnhancedEncodingMode());
     OFCHECK(numValue.isValid());
     /* set numeric measurement value to tree node */
     DSRNumTreeNode numNode(DSRTypes::RT_hasProperties);
@@ -305,6 +481,55 @@ OFTEST(dcmsr_CMR_SRNumericMeasurementValue)
     OFCHECK(numValue.isValid());
     OFCHECK(numValue.setNumericValueQualifier(DSRBasicCodedEntry("0815", "99TEST", "Some test code"), OFFalse /*check*/).good());
     OFCHECK(!numValue.isValid());
+    /* check assignment operator */
+    numValue = DSRNumericMeasurementValue(CODE_DCM_NotANumber);
+    OFCHECK(numValue.isValid());
+}
+
+
+OFTEST(dcmsr_CMR_SRNumericMeasurementValueWithUnits_baselineGroup)
+{
+    /* start without a numeric value (but with a value qualifier) */
+    CMR_SRNumericMeasurementValueWithUnits<CMR_CID7181> numValue(CMR_CID42::NotANumber);
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK(numValue.getNumericValue().empty());
+    OFCHECK(numValue.getMeasurementUnit().isEmpty());
+    OFCHECK(!numValue.getNumericValueQualifier().isEmpty());
+    /* set numeric value and measurement unit (from given context group) */
+    OFCHECK(numValue.setValue("999", CMR_CID7181::Counts).good());
+    OFCHECK(!numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK_EQUAL(numValue.getNumericValue(), "999");
+    OFCHECK_EQUAL(numValue.getMeasurementUnit(), CMR_CID7181::getCodedEntry(CMR_CID7181::Counts));
+    /* set coded entry that is not part of the context group */
+    OFCHECK(numValue.setNumericValueQualifier(DSRBasicCodedEntry("0815", "99TEST", "Some test code"), OFTrue /*check*/).bad());
+}
+
+
+OFTEST(dcmsr_CMR_SRNumericMeasurementValueWithUnits_definedGroup)
+{
+    /* start with a numeric value that has an unknown measurement unit */
+    const DSRCodedEntryValue validUnit(CMR_CID7181::getCodedEntry(CMR_CID7181::Counts));
+    const DSRCodedEntryValue validQualifier(CMR_CID42::getCodedEntry(CMR_CID42::MeasurementFailure));
+    const DSRCodedEntryValue invalidUnit("0815", "99TEST", "Some test code");
+    const DSRCodedEntryValue invalidQualifier("4711", "99TEST", "Some other test code");
+    CMR_SRNumericMeasurementValueWithUnits<CMR_CID7181, OFTrue /*T_DefinedGroup*/> numValue("1.5", invalidUnit);
+    /* coded entry is not part of the defined context group (i.e. not set)*/
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    /* try with a valid (defined) measurement unit */
+    OFCHECK(numValue.setValue("1.5", CMR_CID7181::Counts).good());
+    OFCHECK(numValue.isValid());
+    /* try to disable the (extended) validity check */
+    OFCHECK(numValue.setValue("1.5", invalidUnit, invalidQualifier, OFFalse /*check*/).good());
+    OFCHECK(!numValue.isValid());
+    OFCHECK(numValue.isComplete());
+    OFCHECK_EQUAL(numValue.getMeasurementUnit(), invalidUnit);
+    /* finally, set the measurement unit and value qualifier manually */
+    OFCHECK(numValue.setMeasurementUnit(validUnit).good());
+    OFCHECK(numValue.setNumericValueQualifier(validQualifier).good());
+    OFCHECK(numValue.isValid());
 }
 
 
index 038ee46a557fd94d3e1bde5bec371b755c0ba428..63919d9612ce8259245a9640d5d9c584947ac859 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
 #include "dcmtk/dcmsr/dsrcodvl.h"
 
 
+OFTEST(dcmsr_validCompleteOrEmptyCode)
+{
+    /* first, define some code constants (disable check if needed) */
+    const DSRCodedEntryValue code1("0815", "99TEST", "some test code");
+    const DSRCodedEntryValue code2("0816", "99TEST", "", DSRTypes::CVT_Short, OFFalse /*check*/);
+    const DSRCodedEntryValue code3("a little too long\\with VM>1", "99TEST", "some invalid test code", DSRTypes::CVT_Short, OFFalse /*check*/);
+    const DSRCodedEntryValue code4("", "", "");
+    /* then, perform some tests with these codes */
+    OFCHECK(code1.isValid());
+    OFCHECK(code1.isComplete());
+    OFCHECK(!code1.isEmpty());
+    OFCHECK(!code2.isValid());
+    OFCHECK(!code2.isComplete());
+    //OFCHECK(!code2.isEmpty());    // doesn't work because incomplete codes are never accepted
+    OFCHECK(!code3.isValid());
+    OFCHECK(code3.isComplete());
+    OFCHECK(!code3.isEmpty());
+    OFCHECK(!code4.isValid());
+    OFCHECK(!code4.isComplete());
+    OFCHECK(code4.isEmpty());
+}
+
+
 OFTEST(dcmsr_setCodeValueType)
 {
     /* first, try the standard case (short code value) */
@@ -95,6 +118,7 @@ OFTEST(dcmsr_compareCodedEntry)
     DSRCodedEntryValue codedEntry("121206", "DCM", "Distance");
     OFCHECK(codedEntry == DSRCodedEntryValue("121206", "DCM", "Wrong meaning"));
     OFCHECK(!(codedEntry == DSRCodedEntryValue("" /*empty*/, "DCM", "Distance")));
+    OFCHECK(codedEntry != DSRCodedEntryValue("" /*empty*/, "DCM", "Distance"));
 }
 
 
index a631e1237ceba9c778281176b4c598e1fbce2580..cba3e69f724f43ae466f50d7018b1e80bec48815 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2014-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -63,7 +63,7 @@ OFTEST(dcmsr_changeDocumentType_2)
     /* and, try to change the document type */
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_BasicTextSR).bad());
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_EnhancedSR).bad());
-    OFCHECK(doc.changeDocumentType(DSRTypes::DT_ColonCadSR).bad());
+    OFCHECK(doc.changeDocumentType(DSRTypes::DT_XRayRadiationDoseSR).bad());
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_Comprehensive3DSR).good());
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_ComprehensiveSR).good());
 }
index 8922693dc049457839325c0317f0d0914f4f45f6..911da116734202d11888e4a81018a0630dd05baa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2014-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
 
 #include "dcmtk/ofstd/oftest.h"
 #include "dcmtk/dcmsr/dsrdoc.h"
+#include "dcmtk/dcmsr/dsrtpltn.h"
 #include "dcmtk/dcmsr/dsrnumtn.h"
 #include "dcmtk/dcmsr/dsrtextn.h"
 
 
-OFTEST(dcmsr_addContentItem)
+OFTEST(dcmsr_addContentItem_1)
 {
     /* first, create an SR document to get an empty SR tree */
     DSRDocument doc(DSRTypes::DT_ComprehensiveSR);
@@ -61,6 +62,16 @@ OFTEST(dcmsr_addContentItem)
 }
 
 
+OFTEST(dcmsr_addContentItem_2)
+{
+    /* first, create an empty document subtree */
+    DSRDocumentSubTree tree;
+    /* then, try to add some invalid content items */
+    OFCHECK(tree.addContentItem(DSRTypes::createDocumentTreeNode(DSRTypes::RT_hasProperties, DSRTypes::VT_byReference), DSRTypes::AM_afterCurrent, OFTrue /*deleteIfFail*/).bad());
+    OFCHECK(tree.addContentItem(new DSRIncludedTemplateTreeNode(DSRSharedSubTemplate(NULL), DSRTypes::RT_contains), DSRTypes::AM_afterCurrent, OFTrue /*deleteIfFail*/).bad());
+}
+
+
 OFTEST(dcmsr_copyContentItem)
 {
     /* first, create a new SR document */
index fa42cb06dca227e9607a0504c7abfd6240713526..3df8266b5af6b935079bf4013bf09226edc2db3e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
 OFTEST(dcmsr_setNumericMeasurementValue)
 {
     DSRNumericMeasurementValue numValue;
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK(!numValue.isComplete());
     /* set valid coded entry */
     OFCHECK(numValue.setValue("", DSRCodedEntryValue(), OFTrue /*check*/).good());
+    OFCHECK(numValue.isEmpty());
     OFCHECK(numValue.isValid());
-    OFCHECK(numValue.setValue("", DSRCodedEntryValue(), CODE_DCM_NotANumber, OFTrue /*check*/).good());
+    OFCHECK(!numValue.isComplete());
+    OFCHECK(numValue.setValue(CODE_DCM_NotANumber, OFTrue /*check*/).good());
+    OFCHECK(numValue.isEmpty());
     OFCHECK(numValue.isValid());
+    OFCHECK(numValue.isComplete());
     OFCHECK(numValue.setValue("1.5", DSRBasicCodedEntry("cm", "UCUM", "1.4", "centimeter"), OFTrue /*check*/).good());
+    OFCHECK(!numValue.isEmpty());
     OFCHECK(numValue.isValid());
+    OFCHECK(numValue.isComplete());
     OFCHECK(numValue.setValue("99999", DSRBasicCodedEntry("cm", "UCUM", "1.4", "centimeter"), CODE_DCM_ValueOutOfRange, OFTrue /*check*/).good());
+    OFCHECK(!numValue.isEmpty());
     OFCHECK(numValue.isValid());
-    /* set invalid coded entry */
+    OFCHECK(numValue.isComplete());
+    /* set invalid coded entry (should fail) */
     OFCHECK(numValue.setValue("1.5", DSRCodedEntryValue(), CODE_DCM_NotANumber, OFFalse /*check*/).bad());
     OFCHECK(numValue.setValue("", DSRBasicCodedEntry("0815", "99TEST", "Some test code"), CODE_DCM_NotANumber, OFFalse /*check*/).bad());
+    /* clear coded entry */
+    numValue.clear();
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK(!numValue.isComplete());
 }
index 135b178f3f4a3707b6e66de208d288cc6f6febb7..711fc7e019be5b43fa0b97a68eee1d42f723c4f5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
 
 #include "dcmtk/ofstd/oftest.h"
 #include "dcmtk/dcmsr/dsrdoc.h"
+#include "dcmtk/dcmsr/dsrdocst.h"
 #include "dcmtk/dcmsr/dsrrtpl.h"
 #include "dcmtk/dcmsr/dsrstpl.h"
 
 
-/* minimal test class for root templates (Basic Diagnostic Imaging Report) */
+/* minimal test class for root template (Basic Diagnostic Imaging Report) */
 class SRTestTemplate2000
   : public DSRRootTemplate
 {
@@ -37,14 +38,14 @@ class SRTestTemplate2000
   public:
 
     SRTestTemplate2000()
-      : DSRRootTemplate(DSRTypes::DT_BasicTextSR, "2000", "DCMR", UID_DICOMContentMappingResource)
+      : DSRRootTemplate(DT_BasicTextSR, "2000", "DCMR", UID_DICOMContentMappingResource)
     {
         /* make sure that at least the root CONTAINER is there */
-        addContentItem(RT_isRoot, VT_Container);
+        OFCHECK(addContentItem(RT_isRoot, VT_Container) > 0);
     }
 };
 
-/* minimal test class for sub-templates (Person Observer Identifying Attributes) */
+/* minimal test class for sub-template (Person Observer Identifying Attributes) */
 class SRTestTemplate1003
   : public DSRSubTemplate
 {
@@ -56,11 +57,11 @@ class SRTestTemplate1003
     {
         setExtensible();
         /* make sure that at least the PNAME content item is there */
-        addContentItem(RT_unknown, VT_PName, DSRCodedEntryValue("121008", "DCM", "Person Observer Name"));
+        OFCHECK(addContentItem(RT_unknown, VT_PName, DSRCodedEntryValue("121008", "DCM", "Person Observer Name")).good());
     }
 };
 
-/* minimal test class for sub-templates (Planar ROI Measurements) */
+/* minimal test class for sub-template (Planar ROI Measurements) */
 class SRTestTemplate1410
   : public DSRSubTemplate
 {
@@ -72,7 +73,87 @@ class SRTestTemplate1410
     {
         setExtensible();
         /* make sure that at least the "root" CONTAINER is there */
-        addContentItem(RT_unknown, VT_Container, DSRCodedEntryValue("125007", "DCM", "Measurement Group"));
+        OFCHECK(addContentItem(RT_unknown, VT_Container, DSRCodedEntryValue("125007", "DCM", "Measurement Group")).good());
+        /* ... and two mandatory child nodes */
+        OFCHECK(addChildContentItem(RT_hasObsContext, VT_Text, DSRCodedEntryValue("112039", "DCM", "Tracking Identifier")).good());
+        OFCHECK(addContentItem(RT_hasObsContext, VT_UIDRef, DSRCodedEntryValue("112040", "DCM", "Tracking Unique Identifier")).good());
+    }
+};
+
+/* minimal test class for root template with included templates (Measurement Report) */
+class SRTestTemplate1500
+  : public DSRRootTemplate
+{
+
+  public:
+
+    SRTestTemplate1500()
+      : DSRRootTemplate(DT_EnhancedSR, "1500", "DCMR", UID_DICOMContentMappingResource)
+    {
+        /* make sure that at least the root CONTAINER is there */
+        OFCHECK(addContentItem(RT_isRoot, VT_Container, DSRCodedEntryValue("126000", "DCM", "Imaging Measurement Report")).good());
+        /* ... and include two sub-templates */
+        OFCHECK(includeTemplate(DSRSharedSubTemplate(new SRTestTemplate1003()), AM_belowCurrent, RT_hasObsContext).good());
+        OFCHECK(includeTemplate(DSRSharedSubTemplate(new SRTestTemplate1410()), AM_afterCurrent, RT_contains).good());
+    }
+};
+
+/* minimal test class for template with by-reference relationship (Measurement Group) */
+class SRTestTemplate1501
+  : public DSRSubTemplate
+{
+
+  public:
+
+    SRTestTemplate1501()
+      : DSRSubTemplate("1501", "DCMR", UID_DICOMContentMappingResource)
+    {
+        setExtensible();
+        /* make sure that at least the top-level CONTAINER is there */
+        OFCHECK(addContentItem(RT_contains, VT_Container, DSRCodedEntryValue("125007,", "DCM", "Measurement Group")).good());
+        /* ... and add two measurements, one referring to the other */
+        OFCHECK(addChildContentItem(RT_contains, VT_Num, DSRCodedEntryValue("12345", "99TEST", "Some Measurement")).good());
+        const size_t nodeID = getNodeID();
+        OFCHECK(addContentItem(RT_contains, VT_Num, DSRCodedEntryValue("09876", "99TEST", "Some other Measurement")).good());
+        OFCHECK(addByReferenceRelationship(RT_inferredFrom, nodeID) > 0);
+        /* update by-reference relationships (prepare for cloning) */
+        OFCHECK(updateByReferenceRelationships().good());
+    }
+};
+
+
+/* minimal test class for included sub-template with contained by-reference relationship */
+class SRTestTemplate1410with1501
+  : public DSRSubTemplate
+{
+
+  public:
+
+    SRTestTemplate1410with1501()
+      : DSRSubTemplate("1410", "DCMR")
+    {
+        setExtensible();
+        /* insert sub-template some content items */
+        OFCHECK(insertTemplate(SRTestTemplate1410(), AM_belowCurrent, RT_contains).good());
+        /* include sub-template with by-reference relationship */
+        OFCHECK(includeTemplate(DSRSharedSubTemplate(new SRTestTemplate1501()), AM_belowCurrent, RT_contains).good());
+    }
+};
+
+
+/* minimal test class for root template with the mandatory CONTAINER */
+class SRTestRootTemplate
+  : public DSRRootTemplate
+{
+
+  public:
+
+    SRTestRootTemplate()
+      : DSRRootTemplate(DT_ComprehensiveSR, "0815", "99TEST")
+    {
+        setExtensible();
+        /* make sure that at least the root CONTAINER is there */
+        OFCHECK(addContentItem(RT_isRoot, VT_Container, DSRCodedEntryValue("1234", "99TEST", "Some test code")).good());
     }
 };
 
@@ -94,14 +175,14 @@ OFTEST(dcmsr_rootTemplate)
     OFCHECK(templ.isRootTemplate());
     OFCHECK(!templ.isExtensible());
     /* replace the document tree with the content of the template */
-    OFCHECK(doc.setTreeFromRootTemplate(templ).good());
+    OFCHECK(doc.setTreeFromRootTemplate(templ, OFFalse /*expandTree*/).good());
     /* and perform some further checks */
     OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_BasicTextSR);
     OFCHECK_EQUAL(doc.getTree().countNodes(), 1);
-    OFString templID, mapResource;
-    OFCHECK(doc.getTree().getTemplateIdentification(templID, mapResource).good());
-    OFCHECK_EQUAL(templID, "2000");
-    OFCHECK_EQUAL(mapResource, "DCMR");
+    OFCHECK(doc.getTree().compareTemplateIdentification("2000", "DCMR"));
+    OFCHECK(doc.getTree().compareTemplateIdentification("2000", "DCMR", UID_DICOMContentMappingResource));
+    OFCHECK(!doc.getTree().compareTemplateIdentification("200", "DCMR"));
+    OFCHECK(!doc.getTree().compareTemplateIdentification("2000", "DCM"));
 }
 
 
@@ -118,7 +199,7 @@ OFTEST(dcmsr_subTemplate_1)
     OFCHECK_EQUAL(doc.getTree().countNodes(), 0);
     OFCHECK_EQUAL(tree.getDocumentType(), DSRTypes::DT_EnhancedSR);
     OFCHECK_EQUAL(tree.countNodes(), 0);
-    OFCHECK_EQUAL(templ.countNodes(), 1);
+    OFCHECK_EQUAL(templ.countNodes(), 3);
     OFCHECK_EQUAL(templ.getTemplateIdentifier(), "1410");
     OFCHECK_EQUAL(templ.getMappingResource(), "DCMR");
     OFCHECK_EQUAL(templ.getMappingResourceUID(), "");
@@ -130,11 +211,8 @@ OFTEST(dcmsr_subTemplate_1)
     OFCHECK(doc.setTree(tree).good());
     /* finally, perform some further checks */
     OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
-    OFCHECK_EQUAL(doc.getTree().countNodes(), 1);
-    OFString templID, mapResource;
-    OFCHECK(doc.getTree().getTemplateIdentification(templID, mapResource).good());
-    OFCHECK_EQUAL(templID, "1410");
-    OFCHECK_EQUAL(mapResource, "DCMR");
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 3);
+    OFCHECK(doc.getTree().compareTemplateIdentification("1410", "DCMR"));
 }
 
 
@@ -159,12 +237,74 @@ OFTEST(dcmsr_subTemplate_2)
     OFCHECK_EQUAL(templ1.countNodes(), 2);
     OFCHECK_EQUAL(templ2.countNodes(), 1);
     /* replace the document tree with the content of the template */
-    OFCHECK(doc.setTreeFromRootTemplate(templ1).good());
+    OFCHECK(doc.setTreeFromRootTemplate(templ1, OFFalse /*expandTree*/).good());
     /* and perform some further checks */
     OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_BasicTextSR);
     OFCHECK_EQUAL(doc.getTree().countNodes(), 2);
-    OFString templID, mapResource;
-    OFCHECK(doc.getTree().getTemplateIdentification(templID, mapResource).good());
-    OFCHECK_EQUAL(templID, "2000");
-    OFCHECK_EQUAL(mapResource, "DCMR");
+    OFCHECK(doc.getTree().compareTemplateIdentification("2000", "DCMR"));
+}
+
+
+OFTEST(dcmsr_createExpandedTree)
+{
+    /* first, create an empty SR document */
+    DSRDocument doc(DSRTypes::DT_ComprehensiveSR);
+    /* then, create an almost empty "Measurement Report" (TID 1500) */
+    SRTestTemplate1500 templ;
+    OFCHECK_EQUAL(templ.countNodes(), 3);
+    /* and set its content as the document tree (with expanded sub-templates) */
+    OFCHECK(doc.getTree().isEmpty());
+    OFCHECK(doc.setTreeFromRootTemplate(templ, OFTrue /*expandTree*/).good());
+    OFCHECK(doc.getTree().isExpandedDocumentTree());
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 5);
+    /* do the same without expanding the (included) sub-templates */
+    OFCHECK(doc.setTreeFromRootTemplate(templ, OFFalse /*expandTree*/).good());
+    OFCHECK(!doc.getTree().isExpandedDocumentTree());
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 3);
+    /* and perform some further checks */
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
+    OFCHECK(doc.getTree().compareTemplateIdentification("1500", "DCMR"));
+}
+
+
+OFTEST(dcmsr_templateWithByReferenceRelationship_1)
+{
+    /* first, create an almost empty "Planar ROI Measurements" (TID 1410) */
+    SRTestTemplate1410 templ;
+    /* insert sub-template with by-reference relationship */
+    OFCHECK(templ.insertTemplate(SRTestTemplate1501(), DSRTypes::AM_afterCurrent, DSRTypes::RT_contains).good());
+    /* then, go to the source content item of the by-reference relationship */
+    OFCHECK(templ.gotoNamedNode(DSRCodedEntryValue("09876", "99TEST", "Some other Measurement")) > 0);
+    /* check whether the correct content item has been found */
+    OFCHECK(templ.getCurrentContentItem().getValueType() == DSRTypes::VT_Num);
+    /* and, finally, check whether the by-reference relationship is still valid */
+    OFCHECK(templ.gotoChild() > 0);
+    OFCHECK(templ.getCurrentContentItem().getValueType() == DSRTypes::VT_byReference);
+    OFCHECK(templ.getCurrentContentItem().getReferencedNodeID() > 0);
+
+    // tbd: by-reference relationships do not yet work correctly if contained
+    //      in an "included template" content item, i.e. in a nested subtree
+}
+
+
+OFTEST(dcmsr_templateWithByReferenceRelationship_2)
+{
+    DSRDocument doc;
+    /* first, create a sub-template with included sub-template */
+    SRTestTemplate1410with1501 subTempl;
+    OFCHECK_EQUAL(subTempl.countNodes(), 4);
+    OFCHECK_EQUAL(subTempl.countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 7);
+    /* then, create a root template with a CONTAINER content item */
+    SRTestRootTemplate rootTempl;
+    OFCHECK_EQUAL(rootTempl.countNodes(), 1);
+    /* and insert the sub-template into it */
+    OFCHECK(rootTempl.insertTemplate(subTempl).good());
+    OFCHECK_EQUAL(rootTempl.countNodes(), 5);
+    OFCHECK_EQUAL(rootTempl.countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 8);
+    /* finally, set its content as the document tree */
+    OFCHECK(doc.setTreeFromRootTemplate(rootTempl, OFTrue /*expandTree*/).good());
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 8);
+
+    // tbd: by-reference relationships do not yet work correctly if contained
+    //      in an "included template" content item, i.e. in a nested subtree
 }
index fc6dddcfa58cb3e3c5f5842a754b76644e5c52f3..ef861f6660579959ded557172ef531ba9592ad03 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2015, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -110,8 +110,8 @@ OFTEST(dcmsr_addTreeNode_2)
     /* and, insert the new tree (i.e. add its first node) into the other one */
     OFCHECK_EQUAL(tree.gotoNode(nodeID + 1), nodeID + 1);
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_afterCurrent), nodeID + 3);
-    /* check resulting tree */
     OFCHECK_EQUAL(tree.countNodes(), 6);
+    /* check resulting tree */
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 1);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 3);
@@ -142,7 +142,6 @@ OFTEST(dcmsr_addTreeNode_3)
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_beforeCurrent), nodeID + 3);
     OFCHECK_EQUAL(tree.countNodes(), 6);
     /* check resulting tree */
-    OFCHECK_EQUAL(tree.countNodes(), 6);
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 3);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 4);
@@ -173,7 +172,6 @@ OFTEST(dcmsr_addTreeNode_4)
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_belowCurrent), nodeID + 3);
     OFCHECK_EQUAL(tree.countNodes(), 6);
     /* check resulting tree */
-    OFCHECK_EQUAL(tree.countNodes(), 6);
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 1);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 2);
@@ -204,7 +202,6 @@ OFTEST(dcmsr_addTreeNode_5)
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_belowCurrentBeforeFirstChild), nodeID + 3);
     OFCHECK_EQUAL(tree.countNodes(), 6);
     /* check resulting tree */
-    OFCHECK_EQUAL(tree.countNodes(), 6);
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 3);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 4);
@@ -214,6 +211,61 @@ OFTEST(dcmsr_addTreeNode_5)
 }
 
 
+OFTEST(dcmsr_addTreeNode_6)
+{
+    DSRTree<> tree;
+    const size_t nodeID = tree.getNextNodeID();
+    OFCHECK_EQUAL(tree.countNodes(), 0);
+    /* first, create a simple tree of 3 nodes and check the references */
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode()), nodeID + 0);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_belowCurrent), nodeID + 1);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 2);
+    OFCHECK_EQUAL(tree.countNodes(), 3);
+    /* then, create another tree with 3 node on the same level */
+    DSRTree<> newTree;
+    OFCHECK_EQUAL(newTree.addNode(new DSRTreeNode()), nodeID + 3);
+    OFCHECK_EQUAL(newTree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 4);
+    OFCHECK_EQUAL(newTree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 5);
+    OFCHECK_EQUAL(newTree.countNodes(), 3);
+    /* and, insert the new tree before the root node of the other one */
+    OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
+    OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_beforeCurrent), nodeID + 3);
+    OFCHECK_EQUAL(tree.countNodes(), 6);
+    /* check resulting tree (should have a new root node now) */
+    OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 3);
+}
+
+
+OFTEST(dcmsr_replaceTreeNode)
+{
+    DSRTree<> tree;
+    const size_t nodeID = tree.getNextNodeID();
+    OFCHECK_EQUAL(tree.countNodes(), 0);
+    /* first, create a simple tree of 6 nodes and check the references */
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode()), nodeID + 0);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_belowCurrent), nodeID + 1);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 2);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 3);
+    OFCHECK_EQUAL(tree.gotoPrevious(), nodeID + 2);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_belowCurrent), nodeID + 4);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 5);
+    OFCHECK_EQUAL(tree.gotoPrevious(), nodeID + 4);
+    OFCHECK_EQUAL(tree.goUp(), nodeID + 2);
+    OFCHECK_EQUAL(tree.gotoPrevious(), nodeID + 1);
+    OFCHECK_EQUAL(tree.goUp(), nodeID + 0);
+    OFCHECK_EQUAL(tree.countNodes(), 6);
+    /* then, replace one of the nodes */
+    OFCHECK_EQUAL(tree.gotoNode(nodeID + 2), nodeID + 2);
+    OFCHECK_EQUAL(tree.replaceNode(new DSRTreeNode()), nodeID + 6);
+    /* a subtree of 3 nodes has been replaced by 1 node */
+    OFCHECK_EQUAL(tree.countNodes(), 4);
+    /* finally, replace the root node */
+    OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
+    OFCHECK_EQUAL(tree.replaceNode(new DSRTreeNode()), nodeID + 7);
+    OFCHECK_EQUAL(tree.countNodes(), 1);
+}
+
+
 OFTEST(dcmsr_getPosition)
 {
     DSRTree<> tree;
@@ -503,9 +555,8 @@ OFTEST(dcmsr_gotoAnnotatedTreeNode)
     OFCHECK_EQUAL(tree.gotoNode(DSRTreeNodeAnnotation("bastard")), 0 /* not found */);
     OFCHECK_EQUAL(tree.gotoNode(DSRTreeNodeAnnotation("first child")), nodeID + 1);
     /* clear annotation of current node and try again */
-    DSRTreeNode *node = tree.getNode();
-    if (node!= NULL)
-        node->clearAnnotation();
+    if (tree.isValid())
+        tree.getNode()->clearAnnotation();
     else
         OFCHECK_FAIL("could not get current node");
     OFCHECK_EQUAL(tree.gotoNode(DSRTreeNodeAnnotation("first child")), 0 /* not found */);
index b48ea4c48eaf5d8aa04de6bcd61a0ea31d43f3b6..c75bd804837e4d2899ac2d339007515d8c438c38 100644 (file)
@@ -41,6 +41,8 @@ tlslayer.o: tlslayer.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmtls/tlstrans.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -93,6 +95,8 @@ tlsscu.o: tlsscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -161,6 +165,7 @@ tlsscu.o: tlsscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -231,4 +236,30 @@ tlstrans.o: tlstrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcompat.h
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
+ ../../dcmnet/include/dcmtk/dcmnet/diutil.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
+ ../../dcmnet/include/dcmtk/dcmnet/cond.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
+ ../../dcmnet/include/dcmtk/dcmnet/lst.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dul.h \
+ ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h \
+ ../../dcmnet/include/dcmtk/dcmnet/assoc.h
index a015bceaafc9011ecc0e51355a7bd0a41609e962..10f280358f9278b35df7e5720b240c380edcc1d6 100644 (file)
@@ -57,6 +57,7 @@ END_EXTERN_C
 #include "dcmtk/dcmtls/tlstrans.h"
 #include "dcmtk/dcmtls/tlslayer.h"
 #include "dcmtk/dcmnet/dcompat.h"    /* to make sure we have a select prototype */
+#include "dcmtk/dcmnet/diutil.h"
 
 
 DcmTLSConnection::DcmTLSConnection(int openSocket, SSL *newTLSConnection)
@@ -273,6 +274,10 @@ OFBool DcmTLSConnection::networkDataAvailable(int timeout)
 #else
   nfound = select(getSocket() + 1, &fdset, NULL, NULL, &t);
 #endif
+  if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    DU_logSelectResult(nfound);
+  }
   if (nfound <= 0) return OFFalse;
   else
   {
index e72949eaa96454af7d6bb42ddb3922641d3580db..b2ceb34340861f4bc1bf964aae59fc5d0852b682 100644 (file)
@@ -45,6 +45,8 @@ wlcefs.o: wlcefs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -124,6 +126,8 @@ wlmscpfs.o: wlmscpfs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
index 44b756385367265169562f35f2212563830c10ae..7675948d72bf0523055abb99d5c55573929fb4bf 100644 (file)
@@ -45,6 +45,8 @@ wlds.o: wlds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -126,6 +128,8 @@ wldsfs.o: wldsfs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -198,6 +202,8 @@ wlfsim.o: wlfsim.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -273,6 +279,7 @@ wlfsim.o: wlfsim.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmwlm/wlfsim.h
 wlmactmg.o: wlmactmg.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -322,6 +329,8 @@ wlmactmg.o: wlmactmg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
index 0d849bc466f1b1bae48dc8dd7e8c9afa8c93b8c1..fefa23183955528918214bc7df0428708451e579 100644 (file)
@@ -45,6 +45,8 @@ wltest.o: wltest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
index 416043395309fb7735f7e6cbba25064e45b0fac7..3655c12b9dca4cd0057e7255967780475f343559 100644 (file)
 
 Changes between releases are documented here.
 
+**** Changes from 2016.02.16 (schlamelcher)
+
+- Updated CHANGES.361 for new development snapshot.
+  Affects: docs/CHANGES.361
+
+- Updated DCMTK_ABI_VERSION for new development snapshot.
+  Affects: CMake/dcmtkPrepare.cmake
+
+- Updated man pages for new development snapshot.
+  Affects: doxygen/manpages/man1/dcm2pdf.1
+           doxygen/manpages/man1/dcm2pnm.1
+           doxygen/manpages/man1/dcm2xml.1
+           doxygen/manpages/man1/dcmcjpeg.1
+           doxygen/manpages/man1/dcmcjpls.1
+           doxygen/manpages/man1/dcmconv.1
+           doxygen/manpages/man1/dcmcrle.1
+           doxygen/manpages/man1/dcmdjpeg.1
+           doxygen/manpages/man1/dcmdjpls.1
+           doxygen/manpages/man1/dcmdrle.1
+           doxygen/manpages/man1/dcmdspfn.1
+           doxygen/manpages/man1/dcmdump.1
+           doxygen/manpages/man1/dcmftest.1
+           doxygen/manpages/man1/dcmgpdir.1
+           doxygen/manpages/man1/dcmj2pnm.1
+           doxygen/manpages/man1/dcml2pnm.1
+           doxygen/manpages/man1/dcmmkcrv.1
+           doxygen/manpages/man1/dcmmkdir.1
+           doxygen/manpages/man1/dcmmklut.1
+           doxygen/manpages/man1/dcmodify.1
+           doxygen/manpages/man1/dcmp2pgm.1
+           doxygen/manpages/man1/dcmprscp.1
+           doxygen/manpages/man1/dcmprscu.1
+           doxygen/manpages/man1/dcmpschk.1
+           doxygen/manpages/man1/dcmpsmk.1
+           doxygen/manpages/man1/dcmpsprt.1
+           doxygen/manpages/man1/dcmpsrcv.1
+           doxygen/manpages/man1/dcmpssnd.1
+           doxygen/manpages/man1/dcmqridx.1
+           doxygen/manpages/man1/dcmqrscp.1
+           doxygen/manpages/man1/dcmqrti.1
+           doxygen/manpages/man1/dcmquant.1
+           doxygen/manpages/man1/dcmrecv.1
+           doxygen/manpages/man1/dcmscale.1
+           doxygen/manpages/man1/dcmsend.1
+           doxygen/manpages/man1/dcmsign.1
+           doxygen/manpages/man1/dcod2lum.1
+           doxygen/manpages/man1/dconvlum.1
+           doxygen/manpages/man1/drtdump.1
+           doxygen/manpages/man1/dsr2html.1
+           doxygen/manpages/man1/dsr2xml.1
+           doxygen/manpages/man1/dsrdump.1
+           doxygen/manpages/man1/dump2dcm.1
+           doxygen/manpages/man1/echoscu.1
+           doxygen/manpages/man1/findscu.1
+           doxygen/manpages/man1/getscu.1
+           doxygen/manpages/man1/img2dcm.1
+           doxygen/manpages/man1/movescu.1
+           doxygen/manpages/man1/pdf2dcm.1
+           doxygen/manpages/man1/storescp.1
+           doxygen/manpages/man1/storescu.1
+           doxygen/manpages/man1/termscu.1
+           doxygen/manpages/man1/wlmscpfs.1
+           doxygen/manpages/man1/xml2dcm.1
+           doxygen/manpages/man1/xml2dsr.1
+
+- Updated Makefile dependencies.
+  Affects: dcmiod/libsrc/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmsr/apps/Makefile.dep
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+
+**** Changes from 2016.02.15 (schlamelcher)
+
+- Added 'arith.h' to the list of installed files.
+  Affects: CMakeLists.txt
+           config/Makefile.in
+
+**** Changes from 2016.02.11 (riesmeier)
+
+- Updated documentation of setSpecificCharacterSet():
+  Updated API documentation of method setSpecificCharacterSet(), e.g. made
+  clear that multiple values are allowed and invalid values do not always
+  result in an error.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/libsrc/dsrdoc.cc
+
+- Enhanced description of "charset" parameter:
+  Enhanced description of "charset" parameter of the static function
+  checkStringValue(). Explain that only ASCII and Latin-1 are checked.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrlo.h
+           dcmdata/include/dcmtk/dcmdata/dcvrlt.h
+           dcmdata/include/dcmtk/dcmdata/dcvrpn.h
+           dcmdata/include/dcmtk/dcmdata/dcvrsh.h
+           dcmdata/include/dcmtk/dcmdata/dcvrst.h
+           dcmdata/include/dcmtk/dcmdata/dcvruc.h
+           dcmdata/include/dcmtk/dcmdata/dcvrut.h
+
+**** Changes from 2016.02.11 (onken)
+
+- Fixed use of checkStringValue():
+  For some VR classes (DcmLongText, DcmShortText, DcmUnlimitedText) the method
+  checkStringValue() expects the character set as the second parameter and not
+  the VM as it is the case for most other VR classes. The related calls in
+  dcmiod, dcmfg and dcmseg did not respect this deviating API, thus requiring
+  the given fix which disables the value checking.
+  Affects: dcmfg/include/dcmtk/dcmfg/fgderimg.h
+           dcmfg/include/dcmtk/dcmfg/fgfracon.h
+           dcmfg/libsrc/fgderimg.cc
+           dcmfg/libsrc/fgfracon.cc
+           dcmiod/include/dcmtk/dcmiod/iodmacro.h
+           dcmiod/include/dcmtk/dcmiod/modequipment.h
+           dcmiod/libsrc/iodmacro.cc
+           dcmiod/libsrc/modequipment.cc
+           dcmiod/libsrc/modgeneralimage.cc
+           dcmseg/include/dcmtk/dcmseg/segment.h
+           dcmseg/include/dcmtk/dcmseg/segtypes.h
+           dcmseg/libsrc/segtypes.cc
+
+- Added UID validity checking.
+  Affects: dcmseg/libsrc/segment.cc
+
+**** Changes from 2016.02.09 (riesmeier)
+
+- Added prefix "DCMTK_" to public macro:
+  Added prefix "DCMTK_" to public macro "EXPLICIT_SPECIALIZATION", which is
+  used for explicit template specialization. This name change should avoid
+  possible conflicts. Also moved the macro definition in the "dcmsr" module
+  to a header file and introduced protection against double definition.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/dipxrept.h
+           dcmsr/include/dcmtk/dcmsr/dsdefine.h
+           dcmsr/libsrc/dsrimgfr.cc
+           dcmsr/libsrc/dsrimgse.cc
+           dcmsr/libsrc/dsrsc3gr.cc
+           dcmsr/libsrc/dsrscogr.cc
+           dcmsr/libsrc/dsrtcodt.cc
+           dcmsr/libsrc/dsrtcosp.cc
+           dcmsr/libsrc/dsrtcoto.cc
+           dcmsr/libsrc/dsrwavch.cc
+
+**** Changes from 2016.02.09 (eichelberg)
+
+- Fixed uninitialized struct in libcharls decoder:
+  Fixed unitialized struct in libcharls decoder that sometimes caused
+  the decoder to refuse correctly compressed bitstreams.
+  Thanks to Bruno Milutin <bmilutin@digithurst.de> for the bug report and fix.
+  Affects: dcmjpls/libcharls/header.cc
+
+**** Changes from 2016.02.08 (riesmeier)
+
+- Added comment on missing conditional attribute:
+  Added comment that the conditional attribute Pixel Origin Interpretation
+  (0048,0301) is not yet supported by the DSRSpatialCoordinatesValue class.
+  This attribute is required if the referenced SOP instance is a VL Whole
+  Slide Microscopy Image.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrscovl.h
+
+**** Changes from 2016.02.08 (onken)
+
+- Added support for Correction Proposal CP-1496:
+  Added Tracking ID and Tracking UID to Segmentation segments in order to allow
+  tracking of lesions or other observations over time. This change was introduced
+  in CP-1496.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmseg/include/dcmtk/dcmseg/segment.h
+           dcmseg/libsrc/segment.cc
+
+**** Changes from 2016.02.08 (riesmeier)
+
+- Fixed warnings when compiled without libxml:
+  Fixed various warnings on unused variables when compiled without libxml.
+  These warnings were reported by gcc 4.8.4 with additional flag "-Wextra".
+  Affects: dcmdata/apps/dcmdump.cc
+           dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsrdump.cc
+           ofstd/libsrc/ofchrenc.cc
+
+**** Changes from 2016.02.07 (onken)
+
+- Fixed compiler warnings about unused parameters:
+  Fixed compiler warnings about unused method parameters by adding either dummy
+  uses, removing them from the parameter list (if possible, i.e. if not
+  overwriting a derived function) or adding the corresponding checks.
+  Also removed bonus functions which have still been marked as TODO.
+  Added:   dcmseg/apps/CMakeLists.txt
+  Affects: dcmfg/include/dcmtk/dcmfg/fgfracon.h
+           dcmfg/include/dcmtk/dcmfg/fgframevoilut.h
+           dcmfg/include/dcmtk/dcmfg/fgpixmsr.h
+           dcmfg/include/dcmtk/dcmfg/fgplanposvol.h
+           dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
+           dcmfg/libsrc/fgfracon.cc
+           dcmfg/libsrc/fgframevoilut.cc
+           dcmfg/libsrc/fgimagedatatype.cc
+           dcmfg/libsrc/fgpixmsr.cc
+           dcmfg/libsrc/fgplanposvol.cc
+           dcmfg/libsrc/fgrealworldvaluemapping.cc
+           dcmfg/libsrc/fgusimagedescription.cc
+           dcmiod/include/dcmtk/dcmiod/modenhusimage.h
+           dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixel.h
+           dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
+           dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
+           dcmiod/libsrc/iodmacro.cc
+           dcmiod/libsrc/modenhusimage.cc
+           dcmiod/libsrc/modenhusseries.cc
+           dcmiod/libsrc/modgeneralseries.cc
+           dcmiod/libsrc/modimagepixel.cc
+           dcmiod/libsrc/modmultiframedimension.cc
+           dcmiod/libsrc/modsynchronization.cc
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/libsrc/segdoc.cc
+
+- Add Referenced Performed Procedure Step Sequence.
+  Affects: dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
+           dcmiod/libsrc/modgeneralseries.cc
+
+- Removed broken, unused, doublette method.
+  Affects: dcmnet/include/dcmtk/dcmnet/dccftsmp.h
+           dcmnet/libsrc/dccftsmp.cc
+
+- Allow access to Referenced PPS.
+  Affects: dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/libsrc/segdoc.cc
+
+- Use position parameter.
+  Affects: dcmseg/libsrc/segment.cc
+
+**** Changes from 2016.02.05 (riesmeier)
+
+- Fixed various warnings reported by "gcc -Wextra":
+  Fixed various warnings on unused variables reported by gcc 4.8.4 with
+  additional flag "-Wextra".
+  Affects: dcmnet/libsrc/dstorscu.cc
+           dcmnet/libsrc/scp.cc
+           dcmrt/include/dcmtk/dcmrt/drmimage.h
+           dcmrt/libsrc/drtmas.cc
+           ofstd/libsrc/ofcmdln.cc
+           ofstd/libsrc/offile.cc
+           ofstd/libsrc/ofuuid.cc
+           ofstd/libsrc/ofxml.cc
+
+- Restructured print() output of included templates:
+  Removed printTemplate() method from DSRIncludedTemplateTreeNode since it is
+  not needed any longer. Also fixed numbering of content items in included
+  subtree (now depends on certain print flag).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Overwrite isShort() in DSRIncludedTemplateTreeNode:
+  Overwrite isShort() method in class DSRIncludedTemplateTreeNode. Since the
+  base class DSRDocumentTreeNode always returns OFTrue, it makes sense to
+  check the content in the derived tree node class. Of course, rendering a
+  document tree with "included templates" is currently not supported, so the
+  isShort() method is probably never really used in this context.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+
+- By default, convert wide char encoding to UTF-8:
+  Changed default value of parameter "convert" for both the constructor and
+  the set() method of the OFFilename class, which expects a "wchar_t *", from
+  "OFFalse" to "OFTrue". That means, a character string that is passed with
+  Windows UTF-16 encoding will be converted to UTF-8 (char *) encoding. This
+  change of the default behavior makes sense since e.g. the output of an
+  OFFilename instance to the logger always happens with UTF-8 encoding.
+  Affects: ofstd/include/dcmtk/ofstd/offile.h
+
+- Fixed documentation of convertToWideCharString():
+  Fixed documentation of parameter "toString" of convertToWideCharString():
+  the value of this result variable might only be NULL if memory is exhausted.
+  Affects: ofstd/include/dcmtk/ofstd/ofchrenc.h
+
+**** Changes from 2016.02.04 (riesmeier)
+
+- Changed print() output of included SR templates:
+  Slightly changed the output of the print() method for "included template"
+  tree nodes: The line indentation and output of the position counter is now
+  also shown for this "internal" node (and not only for the included subtree);
+  the position counter is increased by 1 as it is true for all other tree
+  nodes, which makes it easier and more consistent when determining the target
+  of by-reference relationships. However, there is still some work to do...
+  Also, the separate line for the included SR template (starting with the text
+  "# INCLUDE ...") is now printed by default. Therefore, the name of the print
+  flag changed from PF_printXXX to PF_hideXXX.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Further enhanced checkSubTreeConstraints():
+  Added initial support for "included templates" to checkSubTreeConstraints().
+  At least, subtrees with included SR templates are not rejected any longer.
+  However, since no further checks are performed, a message is reported to the
+  trace logger.
+  Also added a new test case in order to check whether "included templates" are
+  really accepted when inserting a sub-template into a root template (with an
+  appropriate IOD constraint checker enabled).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Improved check for valid reference to SR template:
+  Improved check for a valid reference (shared pointer) to the included SR
+  template that is managed by this document tree node class.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrtpltn.cc
+
+- Enhanced documentation of constructor:
+  Added a comment to the constructor that the template identification is also
+  set if available from the referenced SR template.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+
+- Made all canXXX() methods constant:
+  Made methods canAddContentItem(), canAddByReferenceRelationship() and
+  canInsertSubTree() constant since they do not modify the object.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+**** Changes from 2016.02.03 (riesmeier)
+
+- Minor fixes to module page of "dcmsr".
+  Affects: dcmsr/docs/dcmsr.dox
+
+**** Changes from 2016.02.02 (riesmeier)
+
+- Use addContentItem() for by-value relations only:
+  Made clear that addContentItem() should be used for by-value relationships
+  only. This is now also checked and a new test case makes sure that it works.
+  Furthermore, do not accept the internal value type VT_includedTemplate for
+  this method. All this is checked by the helper method canAddContentItem().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrdoctr.cc
+
+- Reintroduced further methods from base class:
+  Added various hasXXX() methods and countChildNodes() from the base classes
+  to the derived template classes. All these methods are "constant", i.e. they
+  do not change the object.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+**** Changes from 2016.02.01 (riesmeier)
+
+- Enhanced support for by-reference relationships:
+  Further enhanced support for by-reference relationships, e.g. by restoring
+  these type of relationships on a clone of the document (sub)tree. Also report
+  details to the debug logger if adding a by-reference relationship fails (for
+  some reason). Finally, added an initial version of a new test case that should
+  make sure that by-reference relationships work with "included templates".
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Added more iterator methods to template classes:
+  Added more of the iterator methods from the base classes to the derived
+  template classes, e.g. gotoRoot(), gotoChild(), gotoNext() or iterate().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+- Declared getParentNode() method "const":
+  Now that OFStack::top() exists in a "const" version, there is not reason
+  anymore not to declare the getParentNode() method "const". So just do it.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Added "const" version of OFStack::top():
+  Added "const" version of top() method to OFStack class as it is defined
+  for the standard (STL) class std::stack. Also fixed various documentation
+  related issues.
+  Affects: ofstd/include/dcmtk/ofstd/ofstack.h
+
+- Removed unneeded type definitions for Windows:
+  Removed unneeded type definitions introduced for calling functions from the
+  "SNMP Utility Library" (snmpapi.dll) on the Windows operating system.
+  Affects: dcmdata/libsrc/dcuid.cc
+
+- Fixed issue with getMACAddress() on Windows 8++:
+  Fixed issue with getMACAddress() on some Windows 8 (and newer) systems.
+  Removed unneeded call to SnmpExtensionQuery() that caused a crash on such
+  systems.
+  Thanks to forum user "andreasb" for the report and suggested fix, and to
+  forum user "Rich in Soquel" for confirming that this fix also solves an
+  issue on Windows 10.
+  Closes DCMTK Bug #594 (hopefully)
+  Affects: dcmdata/libsrc/dcuid.cc
+
+**** Changes from 2016.01.30 (riesmeier)
+
+- Extracted expandIncludedTemplates() method:
+  Extracted code from createExpandedSubTree() for the new protected method
+  expandIncludedTemplates(). This new method might be used in the future for
+  expanding the current (sub)tree, i.e. without creating a new one.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Never accept by-reference relations to templates:
+  Never accept by-reference relationships to internal "included template"
+  content items. This check might be useful for future SR templates that
+  are implemented as part of the "dcmsr/cmr" submodule.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+**** Changes from 2016.01.29 (riesmeier)
+
+- Overwrite print() method in document tree class:
+  Overwrite print() method from base class (DSRDocumentSubTree) in document
+  tree class in order to hide additional parameter(s) on the main API level.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Further enhanced support for included templates:
+  Enhanced support for included (non-expanded) templates in print() method of
+  document (sub)tree class. Now, the position counter of nested content items
+  also works correctly for these "virtual" content items (i.e. with included
+  subtrees). Also the complexity of the print() method code could be reduced.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Extracted position counter from cursor class:
+  Extracted a new DSRPositionCounter class from the existing DSRTreeNodeCursor
+  class. This will allow for enhancing the print() method of the document (sub)
+  tree class, especially with regard to the support of included templates.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/dsrposcn.h
+           dcmsr/libsrc/dsrposcn.cc
+  Affects: dcmsr/apps/Makefile.dep
+           dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+           dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/tests/Makefile.dep
+
+- Declared some very simple methods "inline".
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+           dcmsr/include/dcmtk/dcmsr/dsrtree.h
+
+- Use consistent spelling of the word "data set":
+  Made sure that the spelling of the word "data set" is consistent (i.e. not
+  "dataset") at least for the log messages of the main DICOM parser classes.
+  Also fixed typos if encountered.
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/libsrc/dcdatset.cc
+           dcmdata/libsrc/dcddirif.cc
+           dcmdata/libsrc/dcelem.cc
+           dcmdata/libsrc/dcfilefo.cc
+           dcmdata/libsrc/dcitem.cc
+
+- Added a warning on invalid attribute tags:
+  Added a warning message on invalid DICOM elements in a dataset or item,
+  i.e. elements with an attribute tag of the group 0x0000 to 0x0003, 0x0005,
+  0x0007 or 0xFFFF. Now, for both file meta information header and dataset
+  a warning is reported.
+  Thanks to Mathieu Malaterre <mathieu.malaterre@gmail.com> for the original
+  reports and a sample DICOM file.
+  Affects: dcmdata/libsrc/dcitem.cc
+
+**** Changes from 2016.01.27 (riesmeier)
+
+- Fixed issue with addPersonObserver() in TID 1001:
+  Fixed issue when calling addPersonObserver() in TID1001_ObservationContext
+  for the first time _after_ addDeviceObserver() has already been called.
+  According to the SR template specification, the person observers always have
+  to be stored at the beginning of the subtree of the SR template, i.e. the
+  root node changes in such a case. Modified the test case accordingly.
+  Also see previous commit that fixes an issue on the basic tree class.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Fixed issue in addNode() of basic tree class:
+  Fixed issue in addNode() method of basic tree class, which occurred when
+  adding a node or subtree before the root node of the current tree. Added
+  new test case in order to make sure that this never happens again.
+  This issue has been found when adding a "Device Observer" before a "Person
+  Observer" in TID 1001 (Observation Context). Also see next commit.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtree.cc
+
+- Added another test for invalid unique identifiers.
+  Affects: dcmdata/tests/tchval.cc
+
+**** Changes from 2016.01.26 (riesmeier)
+
+- Updated Makefile dependencies.
+  Affects: dcmdata/apps/Makefile.dep
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/tests/Makefile.dep
+           dcmfg/libsrc/Makefile.dep
+           dcmimage/apps/Makefile.dep
+           dcmimgle/apps/Makefile.dep
+           dcmimgle/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.dep
+           dcmiod/tests/Makefile.dep
+           dcmjpeg/apps/Makefile.dep
+           dcmjpls/apps/Makefile.dep
+           dcmnet/apps/Makefile.dep
+           dcmnet/libsrc/Makefile.dep
+           dcmnet/tests/Makefile.dep
+           dcmpstat/apps/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmpstat/tests/Makefile.dep
+           dcmrt/apps/Makefile.dep
+           dcmrt/libsrc/Makefile.dep
+           dcmrt/tests/Makefile.dep
+           dcmseg/libsrc/Makefile.dep
+           dcmseg/tests/Makefile.dep
+           dcmsign/apps/Makefile.dep
+           dcmtls/libsrc/Makefile.dep
+           dcmwlm/libsrc/Makefile.dep
+           ofstd/libsrc/Makefile.dep
+
+- Further enhanced example on included templates:
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/docs/dcmsr.dox
+
+- Added more header files to Doxygen documentation:
+  Added header files with global definitions (in this case, transfer syntaxes
+  and value representations) to the list of files that are processed by Doxygen.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcxfer.h
+
+- Added new output flag for writeXML():
+  Added new output flag XF_addCommentsForIncludedTemplate for writeXML(), which
+  allows for identifying the beginning and the end of included (non-expanded)
+  templates by means of corresponding XML comments. This might be useful for
+  debugging purposes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtpltn.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added support for new Media Application Profiles:
+  Added support for new Media Storage Application Profiles that were
+  introduced with Supplement 180 (MPEG-4 AVC/H.264 Transfer Syntax):
+  General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP@Level4.2
+  for 2D video, for 3D video and stereo (STD-GEN-BD-MPEG4-HPLV42-2D,
+  STD-GEN-BD-MPEG4-HPLV42-3D, STD-GEN-BD-MPEG4-SHPLV42).
+  Closes DCMTK Conformance #641 and #643.
+  Affects: dcmdata/apps/dcmgpdir.cc
+           dcmdata/include/dcmtk/dcmdata/dcddirif.h
+           dcmdata/libsrc/dcddirif.cc
+           dcmjpeg/docs/dcmmkdir.man
+
+- Added support for Direcory Record Type "TRACT":
+  Added support for new Directory Record Type "TRACT", which has been
+  introduced with Supplement 181 (Tractography Results Storage SOP Class).
+  Closes DCMTK Conformance #664.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcddirif.h
+           dcmdata/include/dcmtk/dcmdata/dcdirrec.h
+           dcmdata/libsrc/dcddirif.cc
+           dcmdata/libsrc/dcdirrec.cc
+
+- Fixed copying of tracking information (TID 1411):
+  Fixed copying of tracking information from a referenced segmentation object:
+  According to CP-1496 the Tracking ID and Tracking UID are stored in an item
+  in the Segment Sequence, so further code is needed to find the appropriate
+  item. Also adapted the test case accordingly.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added new variant of setRealWorldValueMap():
+  Added new variant of adding/setting a real world value map to the template
+  (TID 1411 - Row 14). SOP Class UID and SOP Instance UID are copied from a
+  given DICOM dataset (similar to setReferencedSegment() which has been added
+  by the previous commit).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2016.01.25 (riesmeier)
+
+- Added new variant of setReferencedSegment():
+  Added new variant of adding/setting a referenced segment to the template
+  (TID 1411 - Row 7). According to CP-1494 the Tracking ID and Tracking UID
+  should be consistent with the corresponding element values of the referenced
+  DICOM dataset (if present).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Fixed references to DICOM Correct Items (CP-xxx).
+  Affects: dcmsr/libcmr/tid1600.cc
+           dcmsr/libsrc/dsrbascc.cc
+           dcmsr/libsrc/dsrcomcc.cc
+           dcmsr/libsrc/dsrenhcc.cc
+           dcmsr/libsrc/dsrxrdcc.cc
+           dcmsr/tests/mkreport.cc
+
+- Added support for "Station AE Title" to TID 1004:
+  Added support for new optional content item "Station AE Title" to TID 1004
+  (Device Observer Identifying Attributes). Also added required code definition
+  to "DCM" coding scheme. These changes were introduced with CP-1516.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
+           dcmsr/include/dcmtk/dcmsr/codes/dcm.h
+           dcmsr/libcmr/tid1001.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added support for recently approved CPs:
+  Added support for CP-1460, CP-1496, CP-1499, CP-1504 and CP-1516 to the
+  data dictionary. These CPs were approved during last weeks WG-06 meeting.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Changed handling of "Qualitative Evaluations":
+  Slightly changed handling of "Qualitative Evaluations" (TID 1500 - Row 12
+  to 14). Previously, the CONTAINER in Row 12 was always created. Now, it is
+  only added if qualitative evaluations are present. This change follows the
+  clarification made in the upcoming CP-1579.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added comments on what's "to be done" (tbd).
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Added new method getSOPClassName():
+  Added new convenience method getSOPClassName() that allows for retrieving
+  the name that is associated with the SOP class UID (if any).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
+           dcmsr/libsrc/dsrcomvl.cc
+           dcmsr/libsrc/dsrsoprf.cc
+
+- Added example for using SR templates:
+  Added simple example (based on TID 1500) that shows how to use SR templates.
+  Also revised the first example in order to demonstrate some enhancements
+  that were made on the DICOM SR API during the last couple of months.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/docs/dcmsr.dox
+
+- Added support of TID 1411 to TID 1500:
+  Added support of TID 1411 (Volumetric ROI Measurements) and included
+  templates to TID 1500 (Measurement Report). Now, the implementation of
+  class TID1500_MeasurementReport is complete in terms of what is required
+  by the DICOM standard and what is needed for QIICR's "Measurements SR"
+  converter. Also completed corresponding test case for TID 1500.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrcmr.cc
+
+- Added support for TID 1411 and included templates:
+  Added initial support for TID 1411 (Volumetric ROI Measurements) and
+  included templates TID 1502 and TID 1419. This is the first generic SR
+  template that has been implemented for this toolkit, i.e. it has SR
+  template parameters that are directly mapped to C++ template types.
+  Current support for TID 1411 is focussed on the use within TID 1500
+  (Measurement Report), which will be added by the next commit.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+  Affects: dcmsr/apps/Makefile.dep
+           dcmsr/libcmr/CMakeLists.txt
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/Makefile.in
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/tests/Makefile.dep
+
+- Changed default value of "expandTree" parameter:
+  The default value of the "expandTree" parameter of the
+  DSRDocument::setTreeFromRootTemplate() method changed from OFFalse to OFTrue.
+  This is because some output methods like write() or renderHTML() do not yet
+  work on document trees that contain "included template" nodes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/tests/tsrtpl.cc
+
+- Added method that returns the position counter:
+  Added method that returns the value of the position counter on the current
+  level, i.e. 1 for the first child, 2 for the second child, and so on.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Slightly changed name of some UCUM codes:
+  The name of some UCUM (Unified Code for Units of Measure) code definitions
+  changed due to a slighly revised algorithm that generates these names
+  automatically from the official code meaning (see DICOM PS 3.16). Some code
+  names (like e.g. for "cm" or "s") now start with a lower case letter, which
+  is more intuitive.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/include/dcmtk/dcmsr/codes/ucum.h
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added further SRT codes needed for QIICR:
+  Added further SNOMED-RT (RT) codes that are needed for the "Measurements SR"
+  converter of the QIICR (Quantitative Image Informatics for Cancer Research)
+  project.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/srt.h
+
+**** Changes from 2016.01.22 (riesmeier)
+
+- Removed renderHTML() function from subtree class:
+  Removed renderHTML() functionality from subtree and SR template classes
+  since rendering parts of an SR document in HTML format doesn't make much
+  sense. Also rendering document trees that contain included (non-expanded)
+  templates isn't supported yet. This might change in the future.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Removed write() functionality from subtree class:
+  Removed write() functionality from subtree and SR template classes since
+  writing valid DICOM SR objects does not work (yet) on this level. Also
+  writing of document trees that contain included (non-expanded) templates
+  isn't supported yet. This might change in the future.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+**** Changes from 2016.01.22 (onken)
+
+- Renamed method name for consistency.
+  Affects: dcmiod/include/dcmtk/dcmiod/cielabutil.h
+           dcmiod/libsrc/cielabutil.cc
+           dcmiod/tests/tcielabutil.cc
+
+**** Changes from 2016.01.22 (riesmeier)
+
+- Minor fixes to API documentation.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+
+- Moved renderHTML() to DSRDocumentSubTree:
+  Moved second variant of the renderHTML() method, i.e. the one with less
+  parameters, from class DSRDocumentTree to DSRDocumentSubTree. By doing so,
+  the same method call can be used for both root and non-root templates.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Added check for included templates to renderHTML():
+  Added check for included (non-expanded) templates to renderHTML() method.
+  In such a case, a new error code SR_EC_CannotProcessIncludedTemplates is
+  returned. Rendering these kind of documents is something that might be
+  supported in the future.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Fixed issue with renderHTML() for document subtree:
+  Fixed an issue when using renderHTML() for a document subtree that does not
+  have a single root node, e.g. for a sub-template like TID 1001 (Observation
+  Context).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Fixed wrong output of node ID in print():
+  Fixed wrong output of node ID for "included templates" in print() method.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Fixed issue with writeXML() for document subtree:
+  Fixed an issue when using writeXML() for a document subtree that does not
+  have a single root node, e.g. for an included sub-template like TID 1001
+  (Observation Context).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Used hasTemplateIdentification() method more often.
+  Affects: dcmsr/libsrc/dsrdoctn.cc
+
+**** Changes from 2016.01.21 (riesmeier)
+
+- Fixed minor issues with Doxygen documentation:
+  Also fixed some typos and made source code formatting more consistent.
+  Affects: dcmdata/apps/mdfdsman.h
+           dcmdata/include/dcmtk/dcmdata/dcmetinf.h
+           dcmdata/include/dcmtk/dcmdata/dcvrulup.h
+           dcmnet/include/dcmtk/dcmnet/dccftsmp.h
+           ofstd/include/dcmtk/ofstd/ofcmdln.h
+           ofstd/include/dcmtk/ofstd/oftempf.h
+
+- Added isComplete() to composite reference class:
+  Added new method isComplete() to DSRCompositeReferenceValue, which checks
+  whether the mandatory components are present (non-empty). This is a more
+  basic check than isValid(). However, it is not the counterpart of isEmpty().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
+           dcmsr/libsrc/dsrcomvl.cc
+
+- Added support for new UID from Supplement 181:
+  Added support for new Storage SOP Class UID from Supplement 181
+  (Tractography Results Storage SOP Class).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+
+- Added test for recently introduced VR "Other Long".
+  Added:   dcmdata/tests/tvrol.cc
+  Affects: dcmdata/tests/CMakeLists.txt
+           dcmdata/tests/Makefile.dep
+           dcmdata/tests/Makefile.in
+           dcmdata/tests/tests.cc
+
+- Added support for Supplement 181 to dictionary:
+  Added support for the final text version of Supplement 181 (Tractography
+  Results Storage SOP Class) to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Added helper function putAndInsertUint32Array():
+  Added helper function putAndInsertUint32Array() that can be used for both
+  Unsigned Long (UL) and Other Long (OL) elements.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/libsrc/dcitem.cc
+
+- Added support for new value representation "OL":
+  Added support for new value representation "Other Long" (OL) that has been
+  introduced only recently with Supplement 181 (Tractography Results Storage
+  SOP Class).
+  Closes DCMTK Conformance #664 (partially).
+  Added:   dcmdata/include/dcmtk/dcmdata/dcvrol.h
+           dcmdata/libsrc/dcvrol.cc
+  Affects: dcmdata/apps/dump2dcm.cc
+           dcmdata/docs/dump2dcm.man
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dctk.h
+           dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrul.h
+           dcmdata/libsrc/CMakeLists.txt
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/libsrc/Makefile.in
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcvr.cc
+           dcmdata/libsrc/dcvrul.cc
+           dcmdata/tests/telemlen.cc
+           dcmdata/tests/tests.cc
+
+- Made use of isAffectedBySpecificCharacterSet():
+  Use isAffectedBySpecificCharacterSet() instead of checking the VRs that
+  are affected by the specific character set manually. This should make sure
+  that new VRs are not forgotten (like in this case "UC").
+  Affects: dcmdata/apps/xml2dcm.cc
+
+- Changed name of dcmEnableXXX global variables:
+  Changed name of global variable dcmEnableOtherFloatStringVRGeneration and
+  dcmEnableOtherDoubleStringVRGeneration: removed the term "String" from the
+  names. This change should be harmless since most people will probably use
+  the global function dcmEnable/DisableGenerationOfNewVRs() - if at all.
+  Also see commit 280638e.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/libsrc/dcvr.cc
+
+- Removed unneeded includes and fixed comments.
+  Affects: dcmdata/libsrc/dcvrfl.cc
+           dcmdata/libsrc/dcvrod.cc
+           dcmdata/libsrc/dcvrof.cc
+
+- Fixed wrong use of getVM() in print() method:
+  Since the derived class DcmOtherDouble always has a value multiplicity of 1
+  getVM() cannot be used to determine the number of values stored. So, use
+  the length field instead (as in other similar cases).
+  Affects: dcmdata/libsrc/dcvrfd.cc
+
+**** Changes from 2016.01.21 (onken)
+
+- FormatMessage() instead of hand-crafted switch():
+  Use FormatMessage() in order to get an error code description instead of
+  enumerating all string values in a switch() statement. Made Unix strerror()
+  call thread-safe by using OFStandard version. Fixed typo.
+  Affects: dcmnet/libsrc/diutil.cc
+
+**** Changes from 2016.01.20 (riesmeier)
+
+- Enhanced API documentation:
+  Slightly enhanced API documentation on class DSRTreeNodeCursor.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Removed empty source file for DSRTreeNodeCursor:
+  Removed empty source file for the DSRTreeNodeCursor class. The
+  implementation of the template class has been moved to the header file
+  with commit 6171318. Some linkers complained about the empty file.
+  Removed: dcmsr/libsrc/dsrtncsr.cc
+  Affects: dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+
+- Moved some print() code from node to tree class:
+  Moved some code from the print() method of the DSRIncludedTemplateTreeNode
+  class to the print() method of the DSRDocumentSubTree class.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Added method to compare template identification:
+  Added method to the document subtree, tree node and SR template classes that
+  allows for an easier comparison of the template identification.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+           dcmsr/libsrc/dsrctpl.cc
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/tests/tsrcmr.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Added further SRT codes needed for TID 1500:
+  Added further SNOMED-RT codes that are needed for TID 1500 (Measurement
+  Report) and included sub-templates.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/srt.h
+
+- Modified readable name of internal types:
+  Slightly changed readable name of internal relationship type RT_isRoot and
+  internal value type VT_includedTemplate. This might be useful for debugging
+  purposes.
+  Affects: dcmsr/libsrc/dsrtypes.cc
+
+- Fixed issue with definition of E_ValueType:
+  When the new (internal) value type VT_includedTemplate was introduced,
+  the indicator for the last entry in the enum (VT_last) has not been
+  updated. This impacted the various valueTypeToXXX() helper functions.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+
+**** Changes from 2016.01.20 (onken)
+
+- Removed accidentially checked-in test code.
+  Affects: dcmnet/apps/dcmrecv.cc
+
+- Better logging of select() on network:
+  When waiting for network data using select() it has not been distinguishable
+  whether a regular timeout occurred or if another error (such as an interrupt)
+  interrupted the call. Now, debug output is written in order to make it easier
+  to see what exactly happened (especially in case of errors).
+  Thanks to forum user michael12345 for the report.
+  Affects: dcmnet/apps/dcmrecv.cc
+           dcmnet/include/dcmtk/dcmnet/diutil.h
+           dcmnet/libsrc/assoc.cc
+           dcmnet/libsrc/dcmtrans.cc
+           dcmnet/libsrc/diutil.cc
+           dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulextra.cc
+           dcmnet/libsrc/dulfsm.cc
+           dcmpstat/tests/msgserv.cc
+           dcmtls/libsrc/tlstrans.cc
+
+**** Changes from 2016.01.19 (riesmeier)
+
+- Do no treat empty included template as error:
+  Made sure that an empty included template is not treated as an error in the
+  various output methods like writeXML() or renderHTML(). Instead, EC_Normal
+  is returned (see API documentation).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Output numeric value qualifier in print():
+  Added output of optional numeric value qualifier in print() method if the
+  numeric measurement value is empty.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+
+**** Changes from 2016.01.19 (onken)
+
+- Avoid warning if size_t mismatches unsigned long.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodutil.h
+
+- Avoid warning when initialzing srand():
+  Some systems report a warning when using time_t to initialize srand().
+  A cast was added which should be safe since we are not interested into
+  the exact number time() returns but in a "random" initialization value.
+  Affects: dcmiod/tests/tcielabutil.cc
+
+- Fixed #define for including time.h.
+  Affects: dcmiod/tests/tcielabutil.cc
+
+**** Changes from 2016.01.19 (riesmeier)
+
+- Enhanced error checking of writeXML() method:
+  Enhanced error checking of writeXML() method, i.e. made sure that errors
+  caused by nested elements are actually reported to the caller. This also
+  required a minor change in the "dcm2xml" command line tool.
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/libsrc/dcdatset.cc
+           dcmdata/libsrc/dcdirrec.cc
+           dcmdata/libsrc/dcfilefo.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcmetinf.cc
+           dcmdata/libsrc/dcsequen.cc
+
+- Used more specific conditions than EC_IllegalCall:
+  Used more specific condition codes than EC_IllegalCall when there is an
+  issue with the character set options or the character set encoding of the
+  DICOM dataset.
+  Affects: dcmdata/apps/dcm2xml.cc
+
+**** Changes from 2016.01.18 (onken)
+
+- Added missing shared library export macro.
+  Affects: dcmiod/include/dcmtk/dcmiod/cielabutil.h
+
+**** Changes from 2016.01.18 (riesmeier)
+
+- Added class CMR_SRNumericMeasurementValueWithUnits:
+  Introduced derived template class CMR_SRNumericMeasurementValueWithUnits
+  that allows for checking the measurement unit based on a given context group
+  (baseline or defined group). Also added new test cases for this purpose.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Defined short names for CID and TID classes:
+  Defined short names for context group (CID) and template (TID) classes
+  as an alternative to the existing long names. The nomenclature of these
+  type definitions is: CMR_CIDnnn (with "nnn" being the numeric identifier
+  of the context group) or CMR_TIDnnn (with "nnn" being the numeric ID of
+  the SR template), respectively.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2016.01.18 (onken)
+
+- Utilities for conversion between CIELab and RGB.
+  Added:   dcmiod/include/dcmtk/dcmiod/cielabutil.h
+           dcmiod/libsrc/cielabutil.cc
+           dcmiod/tests/CMakeLists.txt
+           dcmiod/tests/Makefile.dep
+           dcmiod/tests/tcielabutil.cc
+           dcmiod/tests/tests.cc
+  Affects: COPYRIGHT
+           dcmiod/CMakeLists.txt
+           dcmiod/Makefile.in
+           dcmiod/libsrc/CMakeLists.txt
+           dcmiod/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.in
+           dcmiod/tests/Makefile.in
+
+**** Changes from 2016.01.15 (riesmeier)
+
+- Overwrite setValue() methods from base class:
+  Added setValue() methods that expect a CID42_NumericValueQualifier instance
+  for the "valueQualifier" parameter instead of a simple DSRCodedEntryValue.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/libcmr/srnumvl.cc
+
+- Avoid output of pixel items in Native DICOM Model:
+  Added check for Native DICOM Model in writeXML() method of class DcmPixelItem
+  and return an error since output in this format is not supported.
+  Affects: dcmdata/libsrc/dcpxitem.cc
+
+**** Changes from 2016.01.14 (riesmeier)
+
+- Fixed memory leak reported by valgrind:
+  Fixed memory leak ("still reachable blocks" at program exit) that was reported
+  by valgrind in CMR_ContentMappingResource::cleanupAllContextGroups(). Instead
+  of cleanup() the initialize() function was called for the CID 7469 class.
+  Affects: dcmsr/libcmr/init.cc
+
+- Used CMR_SRNumericMeasurementValue more often:
+  Replaced type of numeric value parameters in public API from class
+  DSRNumericMeasurementValue by derived class CMR_SRNumericMeasurementValue
+  which provides additional checks, e.g. on the code used for the optional
+  value qualifier (CID 42).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/tests/Makefile.dep
+
+- Enhanced class CMR_SRNumericMeasurementValue:
+  Enhanced implementation of derived class CMR_SRNumericMeasurementValue:
+  added further constructor for "value qualifier" and copy constructor for
+  DSRNumericMeasurementValue, changed parameters of setNumericValueQualifier()
+  and added new tests.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/libcmr/srnumvl.cc
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2016.01.13 (riesmeier)
+
+- Added support for recently added Context Groups:
+  Added support for recently added Context Group CID 6147, 7181, 7464 and 7469.
+  These groups were still missing in the global initialize/cleanup() methods.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/init.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/init.cc
+
+- Added more header files to Doxygen documentation:
+  Added header files with global definitions (in this case, error constants)
+  to the list of files that are processed by Doxygen.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+
+- Made sure file is processed by Doxygen:
+  Made sure that the header file is processed by Doxygen since it contains
+  some interesting (and also documented) global variables/settings. Fixed
+  a couple of typos and other minor issues related to the documentation.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcobject.h
+
+- Replaced call of isValid() by isComplete():
+  Replaced call of DSRCodedEntryValue::isValid() by the recently introduced
+  isComplete() method where appropriate. Also fixed a couple of wrong calls of
+  addChildContentItem() instead of addContentItem(), which makes no difference
+  for an empty document tree anyway.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libcmr/tid1500.cc
+           dcmsr/libcmr/tid1600.cc
+
+- Always pass "check" parameter to addContentItem().
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/libcmr/tid1204.cc
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libcmr/tid1600.cc
+
+- Flag for default creation of empty image library:
+  Added optional flag to the constructor that allows for disabling the default
+  creation of an empty image library. This approach is now consistent with the
+  upcoming class for TID 1411 (Volumetric ROI Measurements).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/tid1600.cc
+
+- Allowed read-only access to frame/segment list:
+  Added const variants of getFrame/SegmentList(), e.g. in order to check the
+  number of items stored in the list.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
+
+- Enhanced check on Segmentation objects:
+  Enhanced check on DICOM Segmentation objects that are referenced by an
+  instance of DSRImageReferenceValue. On the one hand, the list of known
+  Storage SOP Classes has been updated for the latest edition of the
+  DICOM standard (2015c); the Surface Segmentation object was missing.
+  On the other hand, the list of referenced segment numbers is only allowed
+  for Segmentation objects, which is now also checked.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
+           dcmsr/libsrc/dsrimgvl.cc
+
+- Added further constructor and setValue() method:
+  Added another constructor and setValue() method which accept a coded entry
+  representing the numeric value qualifier, i.e. the reason why the numeric
+  value and measurement unit are absent.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+           dcmsr/tests/tsrnumvl.cc
+
+- Added method isComplete() to numeric value class:
+  Added new method isComplete() to DSRNumericMeasurementValue, which checks
+  whether the mandatory components are present (and complete). This is a much
+  more basic check than isValid() provides. However, it is not the counterpart
+  of isEmpty().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+           dcmsr/tests/tsrnumvl.cc
+
+- Checked standard for defined Waveform objects:
+  Checked current edition of the DICOM standard (2015c) for the list of
+  defined Waveform objects and updated the documentation accordingly.
+  Since the last check (DICOM 2014a), no new SOP Classes were added.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrwavvl.h
+           dcmsr/libsrc/dsrwavvl.cc
+
+- Minor fixes to API documentation.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+- Harmonized log output of DICOM attribute names:
+  Don't mix keywords (CamelCase) with attribute names anymore. Always use the
+  official attribute names in log messages, i.e. with space characters. Of
+  course, this only applies to manually written messages. In case the name
+  is derived automatically from the attribute tag, the official keyword from
+  the DICOM data dictionary (PS 3.6) is used.
+  Affects: dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/libsrc/dsrcsidl.cc
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/libsrc/dsrimgvl.cc
+           dcmsr/libsrc/dsrsc3vl.cc
+           dcmsr/libsrc/dsrscovl.cc
+           dcmsr/libsrc/dsrtcovl.cc
+
+- Added initial version of NCIt code definitions:
+  Added initial version of the NCI Thesaurus (Coding Scheme "NCIt") code
+  definitions as used/defined by the DICOM standard.
+  The code definitions are generated semi-automatically from the machine-readable
+  DocBook/XML version of DICOM PS 3.16 (DICOM Content Mapping Resource). That
+  means that the definitions will be updated from time to time as the standard
+  evolves. However, please be warned that the names of the constants/defines
+  might change in the future (hopefully, there will be official keywords in the
+  standard like they are for the DICOM attribute tags in PS 3.6).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/codes/ncit.h
+
+**** Changes from 2016.01.12 (riesmeier)
+
+- Allowed public access to referenced template:
+  Allowed public access (get and set method) to the referenced template that
+  is managed by the class DSRIncludedTemplateTreeNode. That way, there is no
+  need any more for the inelegant "friend" declaration. Also the API is now
+  more consistent with other "node" classes, even though this class is used
+  only for internal purposes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Fixed minor issues when using C++11 STL:
+  Fixed minor issues when compiling with gcc 4.8.4 and C++11 STL enabled.
+  In C++11 mode, some implicit type conversions do not seem to work, so
+  make them more explicit.
+  Affects: dcmsr/libsrc/dsrtpltn.cc
+           dcmsr/tests/tsrtpl.cc
+
+**** Changes from 2016.01.11 (onken)
+
+- Fixed DCMTK C++11 STL-enabled build:
+  Missing include led to failures since std::cout could not be found any more.
+  Affects: ofstd/libsrc/ofmath.cc
+
+**** Changes from 2016.01.11 (riesmeier)
+
+- Fixed another issue with createExpandedSubTree():
+  When an empty "included template" content item was processed, i.e. removed
+  from the resulting document tree, the next content item was skipped by
+  mistake. This was detected when enhancing a test case for the upcoming
+  support of TID 1411 (which is included in TID 1500 - Row 8).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Avoid checking the pointer returned by getNode():
+  Avoid checking the pointer returned by getNode() method if it is clear that
+  it cannot be NULL, e.g. because the internal cursor has already been checked
+  for validity or a previous call of an iteration method returned a non-zero
+  value.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/tests/tsrtree.cc
+
+- Enhanced derived implementation of countNodes():
+  Enhanced implementation of countNodes() in derived document tree classes by
+  providing two optional flags that allow for specifying how to count
+  and process "included templates", e.g. whether the content of included (but
+  not expanded) sub-templates is counted like a normal subtree with all of its
+  nodes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Added new method isCursorValid():
+  Added method that checks whether the internal cursor of a document tree,
+  which points to the current content item, is valid. This new method is also
+  available to the derived SR template classes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/libsrc/dsrdocst.cc
+
+**** Changes from 2016.01.10 (onken)
+
+- Fixed typo in error message.
+  Affects: dcmfg/libsrc/fginterface.cc
+
+- Fixed bug when packaging binary segmentations:
+  Segmentations bits are filled into the byte from right to left, i.e. starting
+  from the least significant bit of the first byte to the most significant bit
+  of the last byte in the Pixel Data element. The old implementation filled the
+  bytes in the correct order, however, the bits have been filled in from the
+  wrong order. This was discovered since another implementation was available for
+  interoperability testing.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmseg/libsrc/segutils.cc
+
+- Fixed comment.
+  Affects: dcmseg/libsrc/segdoc.cc
+
+**** Changes from 2016.01.08 (riesmeier)
+
+- Updated Makefile dependencies.
+  Affects: dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+
+- Fixed issue expanding empty included template:
+  Fixed an issue that occurred when trying to expand a document tree that
+  contains an empty included template. This resulted in an error status
+  returned by DSRDocumentSubTree::createExpandedSubTree().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Added support for CID 6147, 7181, 7464 and 7469:
+  Added support for Context Group CID 6147 (Response Criteria), CID 7181
+  (Abstract Multi-dimensional Image Model Component Units), CID 7464 (General
+  Region of Interest Measurement Modifiers) and 7469 (Generic Intensity and
+  Size Measurements), which will be needed for using the upcoming template
+  class of TID 1411 (Volumetric ROI Measurements) within TID 1500 (Measurement
+  Report). As always, all these new files were generated automatically.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
+           dcmsr/libcmr/cid6147.cc
+           dcmsr/libcmr/cid7181.cc
+           dcmsr/libcmr/cid7464.cc
+           dcmsr/libcmr/cid7469.cc
+  Affects: dcmsr/libcmr/CMakeLists.txt
+           dcmsr/libcmr/Makefile.in
+
+- Regenerated context groups with new script version:
+  Regenerated all context group header and source files with a new version
+  of the XSLT script. There was only a single change in the name of an enum.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
+           dcmsr/libcmr/cid100.cc
+           dcmsr/libcmr/cid10013.cc
+           dcmsr/libcmr/cid10033.cc
+           dcmsr/libcmr/cid11.cc
+           dcmsr/libcmr/cid244.cc
+           dcmsr/libcmr/cid29.cc
+           dcmsr/libcmr/cid4020.cc
+           dcmsr/libcmr/cid4021.cc
+           dcmsr/libcmr/cid4031.cc
+           dcmsr/libcmr/cid42.cc
+           dcmsr/libcmr/cid7021.cc
+           dcmsr/libcmr/cid7445.cc
+           dcmsr/libcmr/cid7452.cc
+           dcmsr/libcmr/cid7453.cc
+
+- Fixed imprecise documentation of parameter:
+  Distinguish more clearly between "numeric value" and "measurements".
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+
+**** Changes from 2016.01.07 (riesmeier)
+
+- Fixed minor Doxygen-related issues:
+  Also updated the copyright date (where appropriate).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdoctn.cc
+
+- Added new method hasExtendedCodedEntries():
+  Added new method hasExtendedCodedEntries() to the context group base
+  class, which allows for checking whether the group has any extended,
+  i.e. non-standard coded entries. Also changed two virtual functions
+  to "inline" (as it was intended).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
+           dcmsr/libsrc/dsrctxgr.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Introduced new printExtended() method:
+  Extracted output of extended information on a content item from the general
+  print() method of the DSRDocumentSubTree class and moved this code to the
+  new printExtended() method of the DSRDocumentTreeNode class. In other words,
+  the resulting output is the same but the internal structure is now clearer.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+
+- Fixed wrong call of gotoLastEntryFromNodeList():
+  Replaced wrong call of gotoLastEntryFromNodeList() by gotoEntryFromNodeList().
+  In practice, this should make no difference but now the correct function is
+  called.
+  Affects: dcmsr/libcmr/tid1500.cc
+
+**** Changes from 2016.01.06 (riesmeier)
+
+- Added full support for qualitative evaluations:
+  Added full support for qualitative evaluations (TID 1500 - Row 13 and 14),
+  e.g. for categorial observations that are related to the entire subject of
+  the report rather than specific measurement groups (DICOM PS 3.16).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added new method isComplete() to coded entry class:
+  Added new method isComplete() to DSRCodedEntryValue, which checks whether
+  the three mandatory components of a code are non-empty. This is a much more
+  basic check than isValid() provides.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrcodvl.cc
+
+- Added new condition constant and fixed memory leak:
+  Introduced new condition constant that is used when no image library entry
+  descriptors have been added (i.e. copied from a given dataset). Also fixed
+  a possible memory leak that could occur in such a case.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/tid1600.cc
+
+- Added new parameter to gotoLastEntryFromNodeList():
+  Added optional parameter "firstPos" to gotoLastEntryFromNodeList(), which
+  allows for stopping the search process at a particular node list entry.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libsrc/dsrctpl.cc
+
+- Added optional "check" parameter to addContentItem:
+  Added optional "check" parameter to convenience methods addContentItem()
+  and addChildContentItem().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Enhanced hasXXX() by adding an optional parameter:
+  Enhanced hasImagingMeasurements() and hasQualitativeEvaluations() by adding
+  an optional parameter that allows for checking whether the respective content
+  item has any children (i.e. real content). Since the child nodes are optional
+  the default is not to check for children.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libsrc/dsrctpl.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Slightly reworked use of xxx_RESULT helper macros:
+  Introduced new helper macros GOOD_RESULT and BAD_RESULT. Replaced helper
+  macro DELETE_ERROR by an appropriate use of the new macro BAD_RESULT.
+  In general, used the helper macros more often in order to increase the
+  readability of the source code.
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/libcmr/tid1204.cc
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libcmr/tid1600.cc
+
+- Changed variable name for reasons of consistency.
+  Affects: dcmsr/libcmr/srnumvl.cc
+
+- Added preliminary support for TID 1500 - Row 12:
+  Added preliminary support for the conditional CONTAINER content item
+  "Qualitative Evaluations" (TID 1500 - Row 12), which seems to be required
+  according to the condition given in the template definition table. Support
+  for the child content items (CODE and TEXT) will follow in a separate commit.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrcmr.cc
+
+- Added initial version of UMLS code definitions:
+  Added initial version of Unified Medical Language System (Coding Scheme
+  "UMLS") code definitions as used/defined by the DICOM standard.
+  The code definitions are generated automatically from the machine-readable
+  DocBook/XML version of DICOM PS 3.16 (DICOM Content Mapping Resource). That
+  means that the definitions will be updated from time to time as the standard
+  evolves. However, please be warned that the names of the constants/defines
+  might change in the future (hopefully, there will be official keywords in the
+  standard like they are for the DICOM attribute tags in PS 3.6).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/codes/umls.h
+
+**** Changes from 2016.01.05 (riesmeier)
+
+- Added links to implemented SR templates:
+  Added links to the currently implemented SR templates to the Doxygen
+  documentation of the "dcmsr" module.
+  Affects: dcmsr/docs/dcmsr.dox
+
+- Added 1st version of TID 1500 (Measurement Report):
+  Added first version of TID 1500 (Measurement Report) and included templates.
+  The focus of this initial commit was on the general structure of this SR
+  template and the mandatory content items and included templates (TID 1204,
+  1001, 1600). There is also a new test case that demonstrates how to use the
+  new TID1500_MeasurementReport class. Further enhancements will follow.
+  Acknowledgement: This work and also the previous commits on the "dcmsr"
+  module have been supported in part by the "QIICR" project. See CREDITS file
+  for details.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/tid1500.cc
+  Affects: dcmsr/libcmr/CMakeLists.txt
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/Makefile.in
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Used another document type for a test case:
+  Used another document type for the test case "dcmsr_changeDocumentType_2" in
+  order to avoid a warning message that the template identification is not set.
+  Affects: dcmsr/tests/tsrdoc.cc
+
+- Added further output methods to template classes:
+  Added write(), writeXML() and renderHTML() method to template-related classes.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Moved further output methods to subtree class:
+  Moved write(), writeXML() and renderHTML() method from document tree to
+  subtree class. This is a preparatory step that will be completed with the
+  next commit.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Print the annotation text for included templates:
+  As for all other types of content items, the optional annotation text is now
+  also printed for the internal "included template" type.
+  Affects: dcmsr/libsrc/dsrtpltn.cc
+
+- Call clear() method of both base classes:
+  Made sure that the clear() method of both base classes is called, i.e. also
+  DSRTemplateCommon::clear() which clears the internally managed node list.
+  Affects: dcmsr/libsrc/dsrrtpl.cc
+
+- Avoid calling getSelectedValue() explicitly.
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/libcmr/tid1204.cc
+
+- Enhanced reserveEntriesInNodeList():
+  Added optional parameter to reserveEntriesInNodeList() that allows for
+  initializing the entries of the node list with a value of 0.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/libsrc/dsrctpl.cc
+
+- Fixed minor inconsistencies in comments.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+
+- Updated copyright dates.
+  Affects: COPYRIGHT
+
+**** Changes from 2015.12.30 (riesmeier)
+
+- Added support for expanding a document tree:
+  Added support for expanding a document tree, i.e. to replace all included
+  templates by their content (i.e. the subtree that is managed by the class).
+  Also added a new test case that uses (and checks) this new feature.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Added support for including templates into a tree:
+  Added support for including - not inserting - templates into a document tree
+  or subtree. That means, the template-specific API is still available to the
+  user even though the tree structure that is managed by the template class
+  has been "inserted" into a (sub)tree. In order to achieve this, a new value
+  type (internal) has been added: VT_includedTemplate. Further related changes
+  will follow.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+  Affects: dcmsr/apps/Makefile.dep
+           dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/tests/Makefile.dep
+
+- Included standard header "assert":
+  Added missing standard header "assert.h" or "cassert" in order to compile
+  when HAVE_STL and HAVE_STD_STRING are defined. This header file is needed
+  for Linux systems with gcc (and probably others).
+  Also fixed some typos and Doxygen related issues.
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+**** Changes from 2015.12.28 (riesmeier)
+
+- Added support for replacing a node in a tree:
+  Added support for replacing the current node (and all of its child nodes)
+  of a tree by a given node (which might be the root of a subtree). This new
+  feature is needed for the upcoming enhanced SR template support.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtree.cc
+
+- Added mapping resource to IOD constraint checker:
+  Replaced getRootTemplateIdentifier() by getRootTemplateIdentification()
+  which returns the mapping resource in addition to the identifier of the
+  root template (if any). Before, the DICOM Content Mapping Resource (DCMR)
+  was implicitly assumed when calling the getRootTemplateIdentifier() method.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsracqcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrbascc.h
+           dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrchecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrcomcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrenhcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
+           dcmsr/include/dcmtk/dcmsr/dsriodcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+           dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrspecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
+           dcmsr/libsrc/dsracqcc.cc
+           dcmsr/libsrc/dsrbascc.cc
+           dcmsr/libsrc/dsrc3dcc.cc
+           dcmsr/libsrc/dsrchecc.cc
+           dcmsr/libsrc/dsrcolcc.cc
+           dcmsr/libsrc/dsrcomcc.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/libsrc/dsrenhcc.cc
+           dcmsr/libsrc/dsrimpcc.cc
+           dcmsr/libsrc/dsrkeycc.cc
+           dcmsr/libsrc/dsrmaccc.cc
+           dcmsr/libsrc/dsrmamcc.cc
+           dcmsr/libsrc/dsrprocc.cc
+           dcmsr/libsrc/dsrrrdcc.cc
+           dcmsr/libsrc/dsrspecc.cc
+           dcmsr/libsrc/dsrxrdcc.cc
+
+**** Changes from 2015.12.21 (riesmeier)
+
+- Added "inline" specifier to isRootTemplate().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+- Use "const" specifier for pointer parameters:
+  Use "const" specifier for pointer parameters (where appropriate).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Fixed wrong use of gotoXXX() function call:
+  Replaced call of gotoLastEntryFromNodeList() by gotoEntryFromNodeList().
+  This change should make no difference since the method where this function
+  is called always checks whether the requested entry exists in the list of
+  node IDs.
+  Affects: dcmsr/libcmr/tid1600.cc
+
+- Added explicit type cast to avoid warnings:
+  Added explicit type cast in order to avoid compiler warnings reported by
+  gcc 4.8.4 with additional flags.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/dibaslut.h
+           dcmimgle/include/dcmtk/dcmimgle/diovpln.h
+           dcmrt/libsrc/drmdose.cc
+
+**** Changes from 2015.12.18 (onken)
+
+- Disable Visual Studios min()/max() macros:
+  The DCMTK version of min() and max() defined in oflimits.h n conflicts with the
+  Visual Studio versions that are pre-defined in Windows. Thus, they are now
+  disabled in a Visual Studio build.
+  Affects: CMake/osconfig.h.in
+
+- Added missing DLL export macro to OFMath class.
+  Affects: ofstd/include/dcmtk/ofstd/ofmath.h
+
+**** Changes from 2015.12.17 (onken)
+
+- Always use isnan() and isinf() from OFMath.
+  Affects: ofstd/libsrc/ofstd.cc
+
+- Removed superfluous DLL export macro:
+  Renoved DLL export macro from static inline functions causing compiler errors
+  in shared builds.
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+**** Changes from 2015.12.16 (onken)
+
+- Regenerated dependencies for autoconf.
+  Affects: dcmdata/apps/Makefile.dep
+           dcmdata/libi2d/Makefile.dep
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/tests/Makefile.dep
+           dcmfg/libsrc/Makefile.dep
+           dcmimage/apps/Makefile.dep
+           dcmimage/libsrc/Makefile.dep
+           dcmimgle/apps/Makefile.dep
+           dcmimgle/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.dep
+           dcmjpeg/apps/Makefile.dep
+           dcmjpeg/libsrc/Makefile.dep
+           dcmjpls/apps/Makefile.dep
+           dcmjpls/libcharls/Makefile.dep
+           dcmjpls/libsrc/Makefile.dep
+           dcmnet/apps/Makefile.dep
+           dcmnet/libsrc/Makefile.dep
+           dcmnet/tests/Makefile.dep
+           dcmpstat/apps/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmpstat/tests/Makefile.dep
+           dcmqrdb/apps/Makefile.dep
+           dcmqrdb/libsrc/Makefile.dep
+           dcmrt/apps/Makefile.dep
+           dcmrt/libsrc/Makefile.dep
+           dcmrt/tests/Makefile.dep
+           dcmseg/libsrc/Makefile.dep
+           dcmseg/tests/Makefile.dep
+           dcmsign/apps/Makefile.dep
+           dcmsign/libsrc/Makefile.dep
+           dcmsr/apps/Makefile.dep
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/tests/Makefile.dep
+           dcmtls/libsrc/Makefile.dep
+           dcmwlm/apps/Makefile.dep
+           dcmwlm/libsrc/Makefile.dep
+           dcmwlm/tests/Makefile.dep
+           oflog/libsrc/Makefile.dep
+           ofstd/libsrc/Makefile.dep
+           ofstd/tests/Makefile.dep
+           ofstd/tests/taddsub.cc
+
+- Moved math functions from OFStandard to OFMath:
+  Commit 1b6bb7 added oflimit.h dependency to ofstd.h in order to implement some
+  new methods in OFStandard. However, oflimits.h relies on arith.h which is
+  created very early by arith.cc in a special build step. However, arith.cc
+  already relies on ofstd.h so a circular dependency was created. This has been
+  fixed by moving those functions (isnan and isinf) into an new class "OFMath"
+  which is declared in a separate header file ofmath.h. Before, ofstd.h defined
+  the functions and ofmath.cc already implemented them as part of OFStandard.
+  Thus the methods also moved from class OFStandard to OFMath.
+  Added:   ofstd/include/dcmtk/ofstd/ofmath.h
+  Affects: config/arith.cc
+           ofstd/include/dcmtk/ofstd/ofstd.h
+           ofstd/libsrc/ofmath.cc
+           ofstd/libsrc/ofstd.cc
+           ofstd/tests/tlimits.cc
+
+**** Changes from 2015.12.15 (riesmeier)
+
+- Further enhanced implementation of TID 1600:
+  Further enhanced implementation of TID 1600 (Image Library), e.g. since this
+  template is extensible, the structure of content items might deviate from
+  the definition in DICOM PS 3.16 (Content Mapping Resource). Also there is
+  now a way of recreating the root content item of this template after the
+  clear() method has been called.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/libsrc/dsrctpl.cc
+           dcmsr/libsrc/dsrstpl.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2015.12.14 (onken)
+
+- Fixed possible underflows and overflows:
+  At several places in the code a wrong length of ACSE data structures received
+  over the network can cause overflows or underflows when processing those
+  data structures. Related checks have been added at various places in order
+  to prevent such (possible) attacks.
+  Thanks to Kevin Basista for the report.
+  Added:   ofstd/tests/taddsub.cc
+  Affects: dcmnet/libsrc/dulparse.cc
+           ofstd/include/dcmtk/ofstd/ofstd.h
+           ofstd/tests/tests.cc
+           ofstd/tests/tofstd.cc
+
+- Fixed issues with binary segmentations:
+  Fixed memory leak when creating binary segmentations as well as possible write
+  to non-initialized memory. Also fixed extraction of binary segmentation frames
+  for some objects. Fixed typo.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmseg/libsrc/segdoc.cc
+
+- Simpler API to extract binary segmentation frame:
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmseg/include/dcmtk/dcmseg/segutils.h
+           dcmseg/libsrc/segutils.cc
+
+**** Changes from 2015.12.11 (riesmeier)
+
+- Added set() methods for various template rows:
+  Added new methods that allow for setting various modality-specific content
+  items manually. At the moment, only some content items for TID 1607 (Image
+  Library Entry Descriptors for PET) are supported. Further items will follow.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrcmr.cc
+
+- Added new condition constant for template errors:
+  Added new condition constant that can be used if the "Value Set Constraint"
+  of a particular SR template row is violated.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added new function gotoNamedChildNode():
+  Added new helper function gotoNamedChildNode() which sets the internal cursor
+  of the document (sub)tree to a named node starting from the first children of
+  the current node. This avoid calling multiple other functions and checking of
+  return values.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Added output stream operators:
+  Added output stream operator<<() to class DSRCodedEntryValue and
+  DSRNumericMeasurementValue. Internally, the print() method is used.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/libsrc/dsrnumvl.cc
+
+- Added comparison operator "not equal":
+  Added implementation of comparison operator!=() to class DSRCodedEntryValue.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/tests/tsrcodvl.cc
+
+- Added new functions getCursor() and setCursor():
+  Added new protected helper functions getCursor() and setCursor(), which can
+  be used to store and reset a particular cursor position within a derived
+  class (e.g. one of the SR template classes). This is much more efficient
+  than iterating over the tree and searching for a particular node ID.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Added new functions gotoParent() and gotoChild():
+  Added new helper functions gotoParent() and gotoChild() to the basic tree
+  node cursor class. The functionality is identical to goUp() and goDown().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+**** Changes from 2015.12.08 (onken)
+
+- Fixed typo in configure step also in configure.in.
+  Affects: config/configure
+           config/configure.in
+
+- Fixed decsription of configure option and typo:
+  Fixed escription of internal dictionary option and removed a superfluous line
+  leading to a (non-critical) error when executing config/configure.
+  Affects: config/configure
+           config/configure.in
+           config/include/dcmtk/config/osconfig.h.in
+
+- Fixed issue with some binary segmentations:
+  Some binary segmentation objects, whose number of pixels are not dividable by
+  8, could not be correctly read or written since the standard requires to not
+  have any unused bits between the frames when encoding them in the Pixel Data
+  element. The corresponding routines have been re-written to reflect this
+  requirement. Thanks to Andrey Fedorov <andrey.fedorov@gmail.com> and David
+  Flade <fladedavid@gmail.com> for the report.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Added:   dcmseg/tests/CMakeLists.txt
+           dcmseg/tests/Makefile.dep
+           dcmseg/tests/tests.cc
+           dcmseg/tests/tutils.cc
+  Affects: dcmseg/CMakeLists.txt
+           dcmseg/Makefile.in
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/include/dcmtk/dcmseg/segtypes.h
+           dcmseg/include/dcmtk/dcmseg/segutils.h
+           dcmseg/libsrc/segdoc.cc
+           dcmseg/libsrc/segtypes.cc
+           dcmseg/libsrc/segutils.cc
+           dcmseg/tests/Makefile.in
+
+**** Changes from 2015.12.07 (riesmeier)
+
+- Updated "dcmrt" classes based on DICOM 2015c:
+  Updated automatically generated IOD and sequence C++ classes for the various
+  RT objects based on the current edition of the DICOM standard (2015c).
+  Added:   dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+           dcmrt/libsrc/drtbss.cc
+           dcmrt/libsrc/drtcpis.cc
+           dcmrt/libsrc/drtdias.cc
+           dcmrt/libsrc/drtecs.cc
+           dcmrt/libsrc/drtpdecs.cc
+           dcmrt/libsrc/drtqds.cc
+           dcmrt/libsrc/drtwrsrs.cc
+  Affects: COPYRIGHT
+           dcmrt/apps/Makefile.dep
+           dcmrt/include/dcmtk/dcmrt/drtdose.h
+           dcmrt/include/dcmtk/dcmrt/drtimage.h
+           dcmrt/include/dcmtk/dcmrt/drtionpl.h
+           dcmrt/include/dcmtk/dcmrt/drtiontr.h
+           dcmrt/include/dcmtk/dcmrt/drtplan.h
+           dcmrt/include/dcmtk/dcmrt/drtstrct.h
+           dcmrt/include/dcmtk/dcmrt/drttreat.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtags.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtass.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtces.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drteas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtians.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drticps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtois.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtras.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drttts.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtws.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
+           dcmrt/libsrc/CMakeLists.txt
+           dcmrt/libsrc/Makefile.dep
+           dcmrt/libsrc/Makefile.in
+           dcmrt/libsrc/drtaadcs.cc
+           dcmrt/libsrc/drtadcs.cc
+           dcmrt/libsrc/drtads.cc
+           dcmrt/libsrc/drtafs.cc
+           dcmrt/libsrc/drtags.cc
+           dcmrt/libsrc/drtajcs.cc
+           dcmrt/libsrc/drtarics.cc
+           dcmrt/libsrc/drtas1.cc
+           dcmrt/libsrc/drtas5.cc
+           dcmrt/libsrc/drtas6.cc
+           dcmrt/libsrc/drtas7.cc
+           dcmrt/libsrc/drtass.cc
+           dcmrt/libsrc/drtbads.cc
+           dcmrt/libsrc/drtbas.cc
+           dcmrt/libsrc/drtbcps.cc
+           dcmrt/libsrc/drtbl2.cc
+           dcmrt/libsrc/drtbl5.cc
+           dcmrt/libsrc/drtbldls.cc
+           dcmrt/libsrc/drtbldps.cc
+           dcmrt/libsrc/drtblds1.cc
+           dcmrt/libsrc/drtblds5.cc
+           dcmrt/libsrc/drtblds6.cc
+           dcmrt/libsrc/drtbldts.cc
+           dcmrt/libsrc/drtbrcss.cc
+           dcmrt/libsrc/drtbrdrs.cc
+           dcmrt/libsrc/drtbrs.cc
+           dcmrt/libsrc/drtbs.cc
+           dcmrt/libsrc/drtbvcps.cc
+           dcmrt/libsrc/drtcbars.cc
+           dcmrt/libsrc/drtccs.cc
+           dcmrt/libsrc/drtcctus.cc
+           dcmrt/libsrc/drtcdrs.cc
+           dcmrt/libsrc/drtces.cc
+           dcmrt/libsrc/drtchs.cc
+           dcmrt/libsrc/drtcims.cc
+           dcmrt/libsrc/drtcis.cc
+           dcmrt/libsrc/drtcncs.cc
+           dcmrt/libsrc/drtcos.cc
+           dcmrt/libsrc/drtcpas.cc
+           dcmrt/libsrc/drtcps.cc
+           dcmrt/libsrc/drtcs.cc
+           dcmrt/libsrc/drtcsas.cc
+           dcmrt/libsrc/drtcshs.cc
+           dcmrt/libsrc/drtcsis.cc
+           dcmrt/libsrc/drtcss.cc
+           dcmrt/libsrc/drtdcs.cc
+           dcmrt/libsrc/drtdimcs.cc
+           dcmrt/libsrc/drtdimrs.cc
+           dcmrt/libsrc/drtdirs.cc
+           dcmrt/libsrc/drtdose.cc
+           dcmrt/libsrc/drtdrs.cc
+           dcmrt/libsrc/drtds.cc
+           dcmrt/libsrc/drtdspcs.cc
+           dcmrt/libsrc/drtdss.cc
+           dcmrt/libsrc/drtdvhs.cc
+           dcmrt/libsrc/drtdvrrs.cc
+           dcmrt/libsrc/drteas.cc
+           dcmrt/libsrc/drtes.cc
+           dcmrt/libsrc/drtfds.cc
+           dcmrt/libsrc/drtfes.cc
+           dcmrt/libsrc/drtfgs.cc
+           dcmrt/libsrc/drtfgss.cc
+           dcmrt/libsrc/drtfms.cc
+           dcmrt/libsrc/drtfsss.cc
+           dcmrt/libsrc/drtgas.cc
+           dcmrt/libsrc/drthsdrs.cc
+           dcmrt/libsrc/drtiais.cc
+           dcmrt/libsrc/drtians.cc
+           dcmrt/libsrc/drtiblds.cc
+           dcmrt/libsrc/drtibls.cc
+           dcmrt/libsrc/drtibs.cc
+           dcmrt/libsrc/drticpds.cc
+           dcmrt/libsrc/drticps.cc
+           dcmrt/libsrc/drtics.cc
+           dcmrt/libsrc/drtiis.cc
+           dcmrt/libsrc/drtimage.cc
+           dcmrt/libsrc/drtionpl.cc
+           dcmrt/libsrc/drtiontr.cc
+           dcmrt/libsrc/drtipiqs.cc
+           dcmrt/libsrc/drtircs.cc
+           dcmrt/libsrc/drtiseis.cc
+           dcmrt/libsrc/drtitts.cc
+           dcmrt/libsrc/drtiwps.cc
+           dcmrt/libsrc/drtiws.cc
+           dcmrt/libsrc/drtlsds.cc
+           dcmrt/libsrc/drtlsds6.cc
+           dcmrt/libsrc/drtlsds7.cc
+           dcmrt/libsrc/drtmacds.cc
+           dcmrt/libsrc/drtmas.cc
+           dcmrt/libsrc/drtmdrs.cc
+           dcmrt/libsrc/drtmls.cc
+           dcmrt/libsrc/drtmps.cc
+           dcmrt/libsrc/drtmss.cc
+           dcmrt/libsrc/drtmucs.cc
+           dcmrt/libsrc/drtoas.cc
+           dcmrt/libsrc/drtois.cc
+           dcmrt/libsrc/drtopis.cc
+           dcmrt/libsrc/drtos.cc
+           dcmrt/libsrc/drtpbcs.cc
+           dcmrt/libsrc/drtpcs.cc
+           dcmrt/libsrc/drtpcxs.cc
+           dcmrt/libsrc/drtpfms.cc
+           dcmrt/libsrc/drtpics.cc
+           dcmrt/libsrc/drtplan.cc
+           dcmrt/libsrc/drtporcs.cc
+           dcmrt/libsrc/drtporis.cc
+           dcmrt/libsrc/drtppcs.cc
+           dcmrt/libsrc/drtprsis.cc
+           dcmrt/libsrc/drtpscs.cc
+           dcmrt/libsrc/drtpsics.cc
+           dcmrt/libsrc/drtpss.cc
+           dcmrt/libsrc/drtpsss.cc
+           dcmrt/libsrc/drtpvis.cc
+           dcmrt/libsrc/drtras.cc
+           dcmrt/libsrc/drtrbas2.cc
+           dcmrt/libsrc/drtrbas8.cc
+           dcmrt/libsrc/drtrbls.cc
+           dcmrt/libsrc/drtrbos1.cc
+           dcmrt/libsrc/drtrbos6.cc
+           dcmrt/libsrc/drtrbos7.cc
+           dcmrt/libsrc/drtrbs2.cc
+           dcmrt/libsrc/drtrbs4.cc
+           dcmrt/libsrc/drtrbs8.cc
+           dcmrt/libsrc/drtrcdrs.cc
+           dcmrt/libsrc/drtrcos.cc
+           dcmrt/libsrc/drtrcps.cc
+           dcmrt/libsrc/drtrcs.cc
+           dcmrt/libsrc/drtrdros.cc
+           dcmrt/libsrc/drtrdrs1.cc
+           dcmrt/libsrc/drtrdrs6.cc
+           dcmrt/libsrc/drtrdrs8.cc
+           dcmrt/libsrc/drtrds.cc
+           dcmrt/libsrc/drtrecs.cc
+           dcmrt/libsrc/drtrfgs.cc
+           dcmrt/libsrc/drtrfors.cc
+           dcmrt/libsrc/drtrics.cc
+           dcmrt/libsrc/drtrims.cc
+           dcmrt/libsrc/drtris.cc
+           dcmrt/libsrc/drtrlsds.cc
+           dcmrt/libsrc/drtrmdrs.cc
+           dcmrt/libsrc/drtrms.cc
+           dcmrt/libsrc/drtrmss6.cc
+           dcmrt/libsrc/drtrmss7.cc
+           dcmrt/libsrc/drtrpcs.cc
+           dcmrt/libsrc/drtrpis.cc
+           dcmrt/libsrc/drtrppcs.cc
+           dcmrt/libsrc/drtrpphs.cc
+           dcmrt/libsrc/drtrpps.cc
+           dcmrt/libsrc/drtrppss.cc
+           dcmrt/libsrc/drtrps.cc
+           dcmrt/libsrc/drtrris1.cc
+           dcmrt/libsrc/drtrris6.cc
+           dcmrt/libsrc/drtrris9.cc
+           dcmrt/libsrc/drtrrms.cc
+           dcmrt/libsrc/drtrros.cc
+           dcmrt/libsrc/drtrrpcs.cc
+           dcmrt/libsrc/drtrrros.cc
+           dcmrt/libsrc/drtrrs.cc
+           dcmrt/libsrc/drtrrshs.cc
+           dcmrt/libsrc/drtrrtps.cc
+           dcmrt/libsrc/drtrrtps3.cc
+           dcmrt/libsrc/drtrrtps4.cc
+           dcmrt/libsrc/drtrrtps5.cc
+           dcmrt/libsrc/drtrscs.cc
+           dcmrt/libsrc/drtrsers.cc
+           dcmrt/libsrc/drtrses.cc
+           dcmrt/libsrc/drtrshs.cc
+           dcmrt/libsrc/drtrshs6.cc
+           dcmrt/libsrc/drtrshs7.cc
+           dcmrt/libsrc/drtrsis.cc
+           dcmrt/libsrc/drtrsns.cc
+           dcmrt/libsrc/drtrsos.cc
+           dcmrt/libsrc/drtrsrs.cc
+           dcmrt/libsrc/drtrss.cc
+           dcmrt/libsrc/drtrsss.cc
+           dcmrt/libsrc/drtrsts.cc
+           dcmrt/libsrc/drtrtrs2.cc
+           dcmrt/libsrc/drtrtrs4.cc
+           dcmrt/libsrc/drtrvis.cc
+           dcmrt/libsrc/drtrws.cc
+           dcmrt/libsrc/drtrwvms.cc
+           dcmrt/libsrc/drtscris.cc
+           dcmrt/libsrc/drtsdcs.cc
+           dcmrt/libsrc/drtsds.cc
+           dcmrt/libsrc/drtshds.cc
+           dcmrt/libsrc/drtsis.cc
+           dcmrt/libsrc/drtsns.cc
+           dcmrt/libsrc/drtspccs.cc
+           dcmrt/libsrc/drtspcs.cc
+           dcmrt/libsrc/drtss.cc
+           dcmrt/libsrc/drtssrs.cc
+           dcmrt/libsrc/drtstrct.cc
+           dcmrt/libsrc/drttms0.cc
+           dcmrt/libsrc/drttms9.cc
+           dcmrt/libsrc/drttreat.cc
+           dcmrt/libsrc/drttscds.cc
+           dcmrt/libsrc/drttsibs.cc
+           dcmrt/libsrc/drttsmds.cc
+           dcmrt/libsrc/drttts.cc
+           dcmrt/libsrc/drtvls.cc
+           dcmrt/libsrc/drtwps.cc
+           dcmrt/libsrc/drtwrs.cc
+           dcmrt/libsrc/drtws.cc
+           dcmrt/libsrc/drtxrs.cc
+           dcmrt/tests/Makefile.dep
+
+- Handle EINTR raised by connect() or select():
+  The EINTR error (system call was interrupted by a signal that was caught)
+  might also be raised by a call of connect() or select(), which was not yet
+  handled appropriately.
+  Thanks to Thomas Sondergaard <thomas.sondergaard@karoshealth.com> and
+  Alexander Karaivanov <alexander.karaivanov@karoshealth.com> for the report
+  and suggested fix.
+  Affects: dcmnet/libsrc/dulfsm.cc
+
+- Check return value of listen() for errors:
+  Introduced check of return value of listen() call in order to detect e.g.
+  when listening on a certain port that is already in use (EADDRINUSE).
+  This kind of error has been reported for various Linux distributions,
+  e.g. RHEL5.3 and CentOS 7.
+  Thanks to Thomas Sondergaard <thomas.sondergaard@karoshealth.com> and
+  Alexander Karaivanov <alexander.karaivanov@karoshealth.com> for the report
+  and suggested fix.
+  Affects: dcmnet/libsrc/dul.cc
+
+- Fixed numerous typos.
+  Affects: dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulfsm.cc
+
+**** Changes from 2015.12.04 (riesmeier)
+
+- Added comment on optional elements to be supported:
+  Added comment on optional data elements to be supported in the future.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+
+- Fixed wrong cardinality check on type 2 sequence:
+  Fixed wrong cardinality check on type 2 element Performed Procedure Code
+  Sequence (0040,A372). The DICOM standard says: "Zero or more Items shall
+  be included in this Sequence."
+  Affects: dcmsr/libsrc/dsrdoc.cc
+
+**** Changes from 2015.12.01 (riesmeier)
+
+- Updated documentation on recently added VR "UC":
+  Updated documentation regarding the value representation (VR) "Unlimited
+  Characters" (UC), which was missing at various places, especially when
+  listing the VRs that are affected by Specific Character Set (0008,0005).
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/docs/dcm2xml.man
+           dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dcsequen.h
+           dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsr2xml.cc
+           dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+
+**** Changes from 2015.11.25 (onken)
+
+- Replaced type "bool" through "OFBool":
+  Some occurrences of bool have been checked in by one of the last commits
+  (72538a3). Since bool is not used in DCMTK so far (except for code integrated
+  from external sources), it was replaced by the DCMTK-specific OFBool type.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcelem.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+
+**** Changes from 2015.11.18 (onken)
+
+- Add operators "<", "<=", ">" and ">=" for dcmdata:
+  Added operators "<", "<=", ">" and ">=" for DcmElement and DcmItem classes in
+  dcmdata in order to allow comparison of elements or items (i.e. lists of
+  elements). The operators use the compare() functions introduced several weeks
+  ago. Also fixed doxygen documentation issue.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcelem.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/tests/tvrcomp.cc
+
+**** Changes from 2015.11.17 (riesmeier)
+
+- Added text on IOD-specific template constraints:
+  Added text from DICOM PS 3.3 on template constraints to SR IOD checker
+  classes. This might be helpful when certain templates are referenced.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrchecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+           dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrspecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
+
+- Fixed incorrect constraint for root template:
+  According to DICOM PS 3.3, the root template TID 3001 "may be" used for the
+  Procedure Log IOD but it is not required (i.e. no constraint).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+           dcmsr/libsrc/dsrprocc.cc
+
+- Fixed typos and updated references in comments.
+  Affects: dcmsr/libsrc/dsrc3dcc.cc
+           dcmsr/libsrc/dsrcomcc.cc
+           dcmsr/libsrc/dsrimpcc.cc
+
+- Check Acquisition Context SR contstraints:
+  Added support for checking the relationship content constraints of the
+  recently added Acquisition Context SR IOD (Supplement 187).
+  Added:   dcmsr/include/dcmtk/dcmsr/dsracqcc.h
+           dcmsr/libsrc/dsracqcc.cc
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added minimal support for Supplement 187:
+  Added minimal support for the recently approved Supplement 187 (Preclinical
+  Small Animal Imaging Acquisition Context), i.e. added new Storage SOP Class
+  to "dcmdata", "dcmnet" and "dcmqrdb". Also added new SR document type to
+  "dcmsr". Full support for this new Structured Rreporting IOD will follow in
+  a future commit.
+  The official status of this Supplement is "Draft Final Text - Waiting for
+  Codes" (WC), i.e. the document is final but some machine-readable codes are
+  still missing.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcddirif.cc
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+           dcmqrdb/libsrc/dcmqrdbi.cc
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added DICOMDIR support for Supplement 184:
+  Added support for new Storage SOP Class from Supplement 184 (Brachytherapy
+  Delivery Instruction) to DICOMDIR generation code.
+  Also fixed a minor issue with the "RT Beams Delivery Instruction Storage"
+  SOP Class in this context.
+  Affects: dcmdata/libsrc/dcddirif.cc
+
+**** Changes from 2015.11.16 (riesmeier)
+
+- Added support for new UID from Supplement 184:
+  Added support for new Storage SOP Class UID from Supplement 184
+  (Brachytherapy Delivery Instruction).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+
+- Added support for recently approved CPs:
+  Added support for CP-1364, CP-1431, CP-1432, CP-1457, CP-1478 (WC) and
+  CP-1487 to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Added support for Supplement 184 to dictionary:
+  Added support for the final text version of Supplement 184 (Brachytherapy
+  Delivery Instruction) to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+**** Changes from 2015.11.16 (onken)
+
+- Use tag constants for better readability.
+  Affects: dcmdata/tests/tvrcomp.cc
+
+- Print warning when overwriting an existing file:
+  Make sure that movescu and getscu print out a warning when storing a received
+  file using a filename that is already taken by an existing file. This resulting
+  behaviour (warning and overwriting the old file) is now consistent with
+  storescp.
+  Affects: dcmnet/apps/movescu.cc
+           dcmnet/libsrc/scu.cc
+
+**** Changes from 2015.11.13 (riesmeier)
+
+- Added support for further Asian character sets:
+  Added support for further Asian character sets, e.g. Thai, Japanese, Korean
+  and Chinese (including ISO 2022 code extensions). The character set mapping
+  that is used for HTML/XHTML and XML format is based on Table D-1 in DICOM PS
+  3.18 Annex D (current version from Supplement 174 - RESTful Rendering).
+  Affects: dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+           dcmsr/docs/xml2dsr.man
+           dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Changed checking of unsupported character sets:
+  Changed the way unsupported character sets, which are specified by option
+  --charset-assume, are checked. This will facilitate the addition of new
+  character sets (in the future).
+  Affects: dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsr2xml.cc
+
+- Support multiple values for SpecificCharacterSet:
+  Added support for multiple values being used for Specific Character Set
+  (0008,0005). This will allow for specifying ISO 2022 based character sets
+  as needed for Japanese, Korean and Chinese (i.e. code extensions).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/libsrc/dsrdoc.cc
+
+- Fixed "Type of modification" field:
+  Fixed value of "Type of modification" field for recently added macro
+  ENABLE_BUILTIN_DICTIONARY. Now it is consistent with other similar macros.
+  Affects: config/docs/macros.txt
+
+**** Changes from 2015.11.13 (onken)
+
+- Renamed some handle...() methods for consisteny:
+  The handle...() methods for FIND, MOVE and ACTION only receive the
+  corresponding message but do not handle them further (e.g. they do not send
+  a response). Thus the methods have been renamed to "receive...()" following
+  the scheme already used for the STORE message before.
+  Thanks to Ing-Long Eric Kuo <draconpern@hotmail.com> for the report.
+  Affects: dcmnet/include/dcmtk/dcmnet/scp.h
+           dcmnet/libsrc/scp.cc
+
+**** Changes from 2015.11.12 (riesmeier)
+
+- Report an error on missing "Rows" or "Columns":
+  Output a more specific error message to the logger if the mandatory attribute
+  Rows (0028,0010) and/or Columns (0028,0011) is missing.
+  Affects: dcmimgle/libsrc/diimage.cc
+
+**** Changes from 2015.11.09 (riesmeier)
+
+- Enhanced documentation on option --charset-assume:
+  Made it more explicit that the old terms (latin-1, greek, etc.) are still
+  supported for option --charset-assume (for reasons of backward compatibility).
+  Affects: dcmdata/docs/dcm2xml.man
+           dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+
+**** Changes from 2015.11.03 (onken)
+
+- Fixed further possible issues with Segment Number.
+  Affects: dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/include/dcmtk/dcmseg/segment.h
+           dcmseg/libsrc/segdoc.cc
+           dcmseg/libsrc/segment.cc
+
+**** Changes from 2015.11.03 (eichelberg)
+
+- Fixed dcmdata_VRCompare test:
+  Fixed dcmdata_VRCompare unit test to catch a regression of the bug
+  in DcmItem::compare() fixed earlier today.
+  Affects: dcmdata/tests/tvrcomp.cc
+
+- Fixed bug in DcmItem::compare():
+  Fixed bug in DcmItem::compare() leading to incorrect comparison results.
+  Thanks to Robert Habrich <habrich@image-systems.biz> for the bug report and patch.
+  Affects: dcmdata/libsrc/dcitem.cc
+
+**** Changes from 2015.11.03 (onken)
+
+- Fixed segment access via Segment Number:
+  Fixed segment access via Segment Number which now assumes that the first
+  Segment Number is not 0 as in the underlying vector, but starts with 1.
+  Thanks to Andrey Fedorov <andrey.fedorov@gmail.com> for the report.
+  Affects: dcmseg/libsrc/segdoc.cc
+
+**** Changes from 2015.10.09 (riesmeier)
+
+- Check further dependence of command line options:
+  Made sure that option --attr-template-id is only used together with option
+  --write-template-id, i.e. check the same dependence as for option
+  --template-envelope. This is because --attr-template-id would have no effect
+  otherwise, which might be unexpected to the user.
+  Affects: dcmsr/apps/dsr2xml.cc
+
+**** Changes from 2015.10.08 (riesmeier)
+
+- Added guard to fix issue with llvm-gcc-4.2:
+  Added guard to fix linker error with llvm-gcc-4.2 on Mac OS X. This guard
+  checks for the use of a Clang compiler, which requires explicit template
+  instantiation (see commit a3dc5b5) while other compilers do not.
+  Thanks to Bill Lorensen <bill.lorensen@gmail.com> for the report and
+  Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com> for the patch.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+
+**** Changes from 2015.10.08 (onken)
+
+- Fixed error message.
+  Affects: dcmiod/libsrc/iodutil.cc
+
+**** Changes from 2015.10.01 (riesmeier)
+
+- Fixed issue with Clang 3.0/3.1 on Mac OS X:
+  Fixed linker error with Clang 3.0/3.1 on Mac OS X with support for "shared
+  libs" enabled. These older versions seem to require explicit instantiation
+  of the template class DSRTree<DSRDocumentTreeNode>, which serves as the
+  base class of DSRDocumentSubTree.
+  Thanks to Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com> for
+  the patch.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+
+**** Changes from 2015.09.25 (riesmeier)
+
+- Updated comments for TID 1607:
+  Updated comments for TID 1607 (Image Library Entry Descriptors for PET)
+  based on feedback and a proposed CP from David Clunie.
+  Affects: dcmsr/libcmr/tid1600.cc
+
+- Fixed code meaning for UCUM code "deg":
+  Fixed code meaning for UCUM code "deg" (based on a proposed CP from David
+  Clunie, editor of the DICOM standard).
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/ucum.h
+
+- Made static method checkSOPInstance() virtual:
+  Made static method checkSOPInstance() virtual so derived classes can
+  overwrite (specialize) it. Also added a comment explaining this.
+  Affects: dcmnet/include/dcmtk/dcmnet/dstorscu.h
+
+- Fixed possible memory leak:
+  Made sure that all locally allocated memory is freed before returning from
+  a method with an error status. This possible memory leak was found in
+  DcmSCU::sendSTORERequest().
+  Affects: dcmnet/libsrc/scu.cc
+
+- Report an error if DICOM file cannot be loaded:
+  Report an error to the log output if a SOP instance to be sent (i.e. which
+  is part of the transfer list) cannot be loaded from the referenced DICOM file.
+  Affects: dcmnet/libsrc/dstorscu.cc
+
+- Changed API to use OFFilename instead of OFString:
+  Changed type of parameter of some methods that take a filename to use an
+  instance of OFFilename instead of OFString. This allows for passing also
+  a wide character string (on Windows) as well as a C string.
+  This is an onging process, so further API changes may follow.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+           dcmdata/libsrc/dcdatutl.cc
+           dcmnet/include/dcmtk/dcmnet/dstorscu.h
+           dcmnet/include/dcmtk/dcmnet/scu.h
+           dcmnet/libsrc/dstorscu.cc
+           dcmnet/libsrc/scu.cc
+
+- Fixed incorrect header and comments:
+  The helper functions were extracted from the DcmStoragesSCU class, so the
+  copyright header and comments were not correct. Also the name of the DCMTK
+  module was incorrect (it is "dcmdata" and not "dcmiod").
+  Affects: dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+           dcmdata/libsrc/dcdatutl.cc
+
+- Fixed automatically generated CHANGES entry.
+  Affects: docs/CHANGES.361
+
+- Removed suffix "String" from "Other..." VRs:
+  Supplement 181 (Tractography Results Storage SOP Class) introduces a new
+  value representation (VR) "Other Long" (OL) and, thereby, removes the suffix
+  "String" from all "Other..." (Ox) VRs.
+  See DCMTK's issue tracker: Conformance #664
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrobow.h
+           dcmdata/include/dcmtk/dcmdata/dcvrod.h
+           dcmdata/include/dcmtk/dcmdata/dcvrof.h
+
+- Updated latest tested CMake version:
+  Updated information on latest CMake version that has been tested to "3.3.2".
+  Affects: CMake/dcmtkPrepare.cmake
+
 **** Changes from 2015.09.24 (schlamelcher)
 
 - Updated CHANGES.361 for new development snapshot.
@@ -1184,7 +3957,7 @@ Changes between releases are documented here.
            dcmsr/tests/tests.cc
            dcmsr/tests/tsrtree.cc
 
-- Added method to look up a context group entr:
+- Added method to look up a context group entry:
   Added method that can be used to look up a coded entry from a context group.
   This method, therefore, allows for retrieving the "official" code meaning or
   for automatically setting the "enhanced encoding mode".
index 9548c5525d4379381ef5faaa41127bc41e19fb60..7a25292f2f9fb398d97cdcd17846c3e1cd91e1c8 100644 (file)
@@ -38,7 +38,7 @@ PROJECT_NAME           = DCMTK
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "Version @DCMTK_VERSION@ 20150924"
+PROJECT_NUMBER         = "Version @DCMTK_VERSION@ 20160216"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index c2c77db819bb9085cbe6a527ca6c6263b8c07d9f..5c27adf45f942d1a002e994cda75201148197307 100644 (file)
@@ -38,7 +38,7 @@ PROJECT_NAME           = "OFFIS DCMTK"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "@DCMTK_VERSION@ 20150924"
+PROJECT_NUMBER         = "@DCMTK_VERSION@ 20160216"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index 759d9a518ac706d529805224d708b8fcd27d64a6..d279fe540202becbe1d1c9fee6c721647acd7489 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcm2pdf" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2pdf" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2pdf \- Extract PDF file from DICOM encapsulated PDF
index a0e34ed3ee1cc24037704dec38cae6d7a725334b..7487f8c090df98dc24b411cdfe0712d305ca939d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcm2pnm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2pnm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2pnm \- Convert DICOM images to PGM/PPM, PNG, TIFF or BMP
index 11d60e63b8fe8203d99c8a32ffa2a0be007fd388..e1e151ee57598f927ca273dbdc8b42b309dfac23 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcm2xml" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2xml" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2xml \- Convert DICOM file and data set to XML
@@ -111,7 +111,7 @@ specific character set:
 
   +Cc   --charset-check-all
           check all data elements with string values
-          (default: only PN, LO, LT, SH, ST and UT)
+          (default: only PN, LO, LT, SH, ST, UC and UT)
 
           # this option is only used for the mapping to an appropriate
           # XML character encoding, but not for the conversion to UTF-8
@@ -255,7 +255,7 @@ Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
 .fi
 .PP
 .PP
-If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&.
+If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&. For reasons of backward compatibility with previous versions of this tool, the following terms are also supported and mapped automatically to the associated DICOM defined terms: latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew\&.
 .PP
 Multiple character sets using code extension techniques are not supported\&. If needed, option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the conversion to XML format\&. This is also useful for DICOMDIR files where each directory record can have a different character set\&.
 .SH "LOGGING"
@@ -283,4 +283,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBxml2dcm\fP(1), \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2002-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2002-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index 4a4a46c4439f78abf5849304bb10e99de6a8baa5..809a1635d52a7b61b5c6e0244ec8550bdee6ffe0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmcjpeg" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcjpeg" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmcjpeg \- Encode DICOM file to JPEG transfer syntax
index 66d9a234b9b00802987b979e37e662c6e516e0fd..0b20102bbe832fa0cc5756c7a1d332b1ab2e7e55 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmcjpls" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcjpls" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmcjpls \- Encode DICOM file to JPEG-LS transfer syntax
index 593213ada59399c686f036cab56a577431f869b3..040fb5ea780e9383c6bd55b4fd11a8f996b4bb17 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmconv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmconv" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmconv \- Convert DICOM file encoding
index 534aaf213a7bda5ce46fcf66063ec9bcc0ba4762..0ee02732efea2bb62ad83e383e2fc0da758d05e8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmcrle" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcrle" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmcrle \- Encode DICOM file to RLE transfer syntax
index 2c8c9c4b2ed2579e2836e390c367e72206f8b3c1..efa5999c3a27e362de3d931869b8e21d7a3d9cf9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmdjpeg" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdjpeg" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdjpeg \- Decode JPEG-compressed DICOM file
index 15ef16aa73d22e516e7bdfe2a027b166a5347202..15e302c72a04408595378424a2b150f939752d12 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmdjpls" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdjpls" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdjpls \- Decode JPEG-LS compressed DICOM file
index bb067b0e9c6b591066a04729928f418563b7b34b..8961cd80e8182875aa73353228b0400d28c6cbca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmdrle" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdrle" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdrle \- Decode RLE-compressed DICOM file
index 560d75f5002172c377e0d1833161c1435422cc03..089e86275919f202eb9c3f833d6d6fee9004636c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmdspfn" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdspfn" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdspfn \- Export standard display curves to a text file
index 242d3f45e4bfafd8113eb2b5877cfc20fb5a1c06..993d9b047d64971d0fa0a53916ac05e87bd06e22 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmdump" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdump" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdump \- Dump DICOM file and data set
index 4744b9b1d618c844558f02812bf2bf7088284f62..80fcf9814d45bca350aac72b057491dd57a69469 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmftest" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmftest" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmftest \- Test if file uses DICOM part 10 format
index 881f3badbd0396a9e0e09aee103ff0d6a56f4ffa..99af680ec1c2cb5741ad98bc1106e9dade744b95 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmgpdir" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmgpdir" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmgpdir \- Create a general purpose DICOMDIR
index 975ed440ce49248ef8840a62946732c75ebf41c1..0e7d63d0fc73d51bd29d2502671b5a348d4f29c9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmj2pnm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmj2pnm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmj2pnm \- Convert DICOM images to PGM/PPM, PNG, TIFF, JPEG or BMP
index caa7255fe9249f10e43c3536c89c32a3373fc107..5d4b858639f71f9442dc160ba0b7b54f2bfba7da 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcml2pnm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcml2pnm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcml2pnm \- Convert DICOM images to PGM/PPM, PNG, TIFF or BMP
index 990d3f45cc61e31f3f8a46c629120667b91685b9..ea31cd54e154268575d2aac6123f0776dbfc3741 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmmkcrv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmkcrv" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmkcrv \- Add 2D curve data to image
index b94f60252dbbddfd4159e70b859ceb030caf7d55..48ce603231a32ca14786267f438ac8cef8704982 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmmkdir" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmkdir" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmkdir \- Create a DICOMDIR file
@@ -38,6 +38,12 @@ General Purpose BD Interchange with MPEG-4 AVC/H\&.264 HiP@Level4\&.1 (STD-GEN-B
 .IP "\(bu" 2
 General Purpose BD Interchange with MPEG-4 AVC/H\&.264 BD-Compatible HiP@Level4\&.1 (STD-GEN-BD-MPEG4-HPLV41BD)
 .IP "\(bu" 2
+General Purpose BD Interchange with MPEG-4 AVC/H\&.264 HiP@Level4\&.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+.IP "\(bu" 2
+General Purpose BD Interchange with MPEG-4 AVC/H\&.264 HiP@Level4\&.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+.IP "\(bu" 2
+General Purpose BD Interchange with MPEG-4 AVC/H\&.264 Stereo HiP@Level4\&.2 (STD-GEN-BD-MPEG4-SHPLV42)
+.IP "\(bu" 2
 General Purpose USB and Flash Memory Interchange with JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)
 .IP "\(bu" 2
 General Purpose USB and Flash Memory Interchange with JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)
@@ -264,6 +270,18 @@ profiles:
           General Purpose BD Interchange with MPEG-4 AVC/H.264
           BD-Compatible HiP@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
 
+        --general-bd-mpeg4-hp2d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP@Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+
+        --general-bd-mpeg4-hp3d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP@Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+
+        --general-bd-mpeg4-hpst
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          Stereo HiP@Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
+
   -Pfl  --usb-and-flash-jpeg
           General Purpose USB/Flash Memory Interchange with JPEG
           (STD-GEN-USB/MMC/CF/SD-JPEG)
@@ -409,4 +427,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmgpdir\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2001-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2001-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index 54a1ecbe2cc1cc6e2600ddc751801c35b71ae9a1..6c924c9ad36d2bb62519d17e10746948eccb24d3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmmklut" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmklut" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmklut \- Create DICOM look-up tables
index f410592d6d0f689202b63f064295148cfcbcfde7..83ddb87f5e31192ec6e7eeb99a63b2b8dea31bdf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmodify" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmodify" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmodify \- Modify DICOM files
index 508ea6634904114085776b33b88de42ba8f259f0..9bb105b4a1f30aaa055b2a1b5978654eed34b220 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmp2pgm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmp2pgm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmp2pgm \- Read DICOM image and presentation state and render bitmap
index 526660464a92ce434c4d20952625629a1e2f979a..0fa6433fd2eebfb8498a91cead8ebf5687262bfd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmprscp" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmprscp" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmprscp \- DICOM basic grayscale print management SCP
index eb3719921a740028d7d8061ad969eb4bd4d4c08e..2606621b38412683290d72f9481e1437b649d3bd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmprscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmprscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmprscu \- Print spooler for presentation state viewer
index 081f6c1600046fc70f95e6065c29bcf9d449d8bf..0c4ac68d37ad1b27f81f1877fe0d86e0bd717d91 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmpschk" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpschk" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpschk \- Checking tool for presentation states
index 8ac76dee50d20d1ed56323294b13e61234a7cd25..09a9e95552449ac0e9d5186a228fb261fa73fcc9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmpsmk" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsmk" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpsmk \- Create DICOM grayscale softcopy presentation state
index 0453c82cfb1473ad511cf86d3926adbedadf1daa..58e896a1be38d314c6871e0bde87b118e3ea5dd7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmpsprt" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsprt" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpsprt \- Read DICOM images and presentation states and render print job
index 55089aa9fcef8bd05e0377917ff88f74bb217b32..91bf59aae455ed2fa2a7fbc54e4377b33502bdd4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmpsrcv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsrcv" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpsrcv \- Network receive for presentation state viewer
index 6b5e10ed9d63f0b0e46062bb414833b1da32cfc6..4fed6c08dd94d7b187947093d2020fa88f3bbf81 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmpssnd" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpssnd" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmpssnd \- Network send for presentation state viewer
index 228ab829d2a7d8796a03c84fa1b757891459a666..d12d08796fad94ec3ff0fb016644a1aa7dcc2d56 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmqridx" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqridx" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqridx \- Register a DICOM image file in an image database index file
index e032f736b11e1385378467f397345047e04c45f1..4f5e82c3281e01377f904f7693dc95973c78f8f2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmqrscp" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqrscp" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqrscp \- DICOM image archive (central test node)
@@ -682,6 +682,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -730,6 +731,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
@@ -754,6 +756,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
+RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
 GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
 ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
 ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
@@ -893,4 +896,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmqridx\fP(1), \fBdcmqrti\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1993-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1993-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index 690d73bff7cbe2cc8f90895325d5b4d5773348bb..4bd72dbc855c48a32d22ef4027482a3fb0b1d647 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmqrti" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqrti" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqrti \- The Terminal Initiator Telnet Client Program
index 2b87fb9adbd50015dd4db2d288d6ed7b8f9ac7cc..6d51f32a396f2cf53de79ec2865257fa8ad002bc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmquant" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmquant" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmquant \- Convert DICOM color images to palette color
index d772b4942c58d6f155b43eebfd9b5db76e5f7753..988cd3d81e75e187ee1cc41a4eac900698c4678b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmrecv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmrecv" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmrecv \- Simple DICOM storage SCP (receiver)
index 81d6f407f5ffce4bc265b687c783cb45cc0e2bb4..f98bf473a60bbe311464a77a27cb74ca9a080c8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmscale" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmscale" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmscale \- Scale DICOM images
index 659cb65f09eb32e25706634cc4d32841d80cef0e..ddedf3803b6294f4a8841120ac4be72e548fbf56 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmsend" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmsend" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmsend \- Simple DICOM storage SCU (sender)
index a439c39ee82e4beaa898b50afcc622ac870c3110..d69b5da8740ab1e5109c80d2b0fb6e9137c4c4e9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcmsign" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmsign" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmsign \- Sign and Verify DICOM Files
index 1542bbd8662cdcaae3c244df9ddbeb1f4f8f0b86..0deba9a2f4b91ecbd8114d439327dd6ba41bd076 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dcod2lum" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcod2lum" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcod2lum \- Convert hardcopy characteristic curve file to softcopy format
index 3a67e66163401b8c8cdb9fd925297efac4402d07..14c2bb930798902228b207c781f35f7ca5f3ef75 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dconvlum" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dconvlum" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dconvlum \- Convert VeriLUM files to DCMTK display files
index 3a72d3638c1856ecf7ac34797fe8381fb07419a5..651fec4c4668c617a18b75aeeb833540fccc2a32 100644 (file)
@@ -1,4 +1,4 @@
-.TH "drtdump" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "drtdump" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 drtdump \- Dump DICOM RT file and data set
index 70d47361a30c2d7d01d1e622d872da4c02a01c94..983d00bdb0b65fa3eafad74c7398ccbe4d1deda5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dsr2html" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsr2html" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsr2html \- Render DICOM SR file and data set to HTML/XHTML
@@ -127,7 +127,7 @@ specific character set:
 
        --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # HTML/XHTML character encoding, but not for the conversion
@@ -245,23 +245,29 @@ The HTML/XHTML encoding is determined automatically from the DICOM attribute (00
 .PP
 .PP
 .nf
-ASCII         (ISO_IR 6)    =>  (none)
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  (none)
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 .fi
 .PP
 .PP
-If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&.
+If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&. For reasons of backward compatibility with previous versions of this tool, the following terms are also supported and mapped automatically to the associated DICOM defined terms: latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew\&.
 .PP
-Multiple character sets are not supported (only the first attribute value is mapped in case of value multiplicity)\&. If needed, option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the rendering to HTML/XHTML format\&.
+Option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the rendering to HTML/XHTML format\&.
 .SH "LOGGING"
 .PP
 The level of logging output of the various command line tools and underlying libraries can be specified by the user\&. By default, only errors and warnings are written to the standard error stream\&. Using option \fI--verbose\fP also informational messages like processing details are reported\&. Option \fI--debug\fP can be used to get more details on the internal activity, e\&.g\&. for debugging purposes\&. Other logging levels can be selected using option \fI--log-level\fP\&. In \fI--quiet\fP mode only fatal errors are reported\&. In such very severe error events, the application will usually terminate\&. For more details on the different logging levels, see documentation of module 'oflog'\&.
@@ -287,4 +293,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2000-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index 70256a3091df4df9c55549abe0e9e4a535bdf30f..33f52d3ef7dbcd86db54962b28f46999bef90ff8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dsr2xml" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsr2xml" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsr2xml \- Convert DICOM SR file and data set to XML
@@ -122,7 +122,7 @@ specific character set:
 
   +Cc  --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # XML character encoding, but not for the conversion to UTF-8
@@ -211,23 +211,29 @@ The XML encoding is determined automatically from the DICOM attribute (0008,0005
 .PP
 .PP
 .nf
-ASCII         (ISO_IR 6)    =>  "UTF-8"
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  "UTF-8"
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 .fi
 .PP
 .PP
-If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&.
+If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&. For reasons of backward compatibility with previous versions of this tool, the following terms are also supported and mapped automatically to the associated DICOM defined terms: latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew\&.
 .PP
-Multiple character sets are not supported (only the first attribute value is mapped in case of value multiplicity)\&. If needed, option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the conversion to XML format\&.
+Option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the conversion to XML format\&.
 .SS "ERROR HANDLING"
 Please be careful with the processing options \fI--unknown-relationship\fP, \fI--invalid-item-value\fP, \fI--ignore-constraints\fP, \fI--ignore-item-errors\fP and \fI--skip-invalid-items\fP since they disable certain validation checks on the DICOM SR input file and, therefore, might result in non-standard conformant output\&. However, there might be reasons for using one or more of these options, e\&.g\&. in order to read and process an incorrectly encoded SR document\&.
 .SS "Limitations"
@@ -257,4 +263,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBxml2dsr\fP(1), \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2000-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index 6edf1756890083f2190a4914d501e0bd08f83dfb..93cae05193fedc4d9b3ab7adb661f47e2e015323 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dsrdump" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsrdump" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsrdump \- Dump DICOM SR file and data set
index 63d0f910bde3306594fff4e775ca3db2445ed5b9..0e5ad427d525865bfd46e104084bb1d554171c55 100644 (file)
@@ -1,4 +1,4 @@
-.TH "dump2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dump2dcm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dump2dcm \- Convert ASCII dump to DICOM file
@@ -195,8 +195,8 @@ VR:    Value Representation must be written as 2 characters as in
        between the two characters.  If the VR can be determined from
        the tag, this part of a line is optional.
 Value: There are several rules for writing values:
-       1. US, SS, SL, UL, FD, FL are written as decimal strings that
-          can be read by scanf().
+       1. US, SS, SL, UL, FD, FL, OD, OF and OL are written as decimal
+          strings that can be read by scanf().
        2. AT is written as '(gggg,eeee)' with additional spaces
           stripped off automatically and gggg and eeee being decimal
           strings that can be read by scanf().
@@ -263,4 +263,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmdump\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1996-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1996-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index b7a6aac64529d45a0d741c5c1d8794c65a109037..a9e22ae0974ae46c24566781b5addff652906832 100644 (file)
@@ -1,4 +1,4 @@
-.TH "echoscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "echoscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 echoscu \- DICOM verification (C-ECHO) SCU
index bf79e27bdae0324b8d3f716c87672de8f2901bd7..de9366eecb76e50e42befaea97d33054ae3cedcc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "findscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "findscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 findscu \- DICOM query (C-FIND) SCU
index 25aa76fc0cfb7bc8d971b22b7a3df1286a8330f8..5fe58e404cf452cab7f55b478f61f8e10c0a9ba9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "getscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "getscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 getscu \- DICOM retrieve (C-GET) SCU
index e5e196f85f97e4734492c127a494ea6061c2da6f..3381c25c173db6bec478ae71e34b64b36f557394 100644 (file)
@@ -1,4 +1,4 @@
-.TH "img2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "img2dcm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 img2dcm \- Convert standard image formats into DICOM format
index 538aacacaae25f4ccf0af0778687c3f76321d95d..d70d7b3a0289b2aa6b9058b46bee0a442677d417 100644 (file)
@@ -1,4 +1,4 @@
-.TH "movescu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "movescu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 movescu \- DICOM retrieve (C-MOVE) SCU
index c9918096b9d1789c655da6145e9cb1cc1e908952..4681de1f90ff128cbf87c2a0d98f69c3fa25152b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "pdf2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "pdf2dcm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 pdf2dcm \- Convert PDF file to DICOM
index 9a918f80e6cc7cb8efcc79f214df1115d652530c..19667d9c272dfc518b11ac4223cc2a79d8bb129f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "storescp" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "storescp" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 storescp \- DICOM storage (C-STORE) SCP
@@ -544,6 +544,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -592,6 +593,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 RadiopharmaceuticalRadiationDoseSRStorage            1.2.840.10008.5.1.4.1.1.88.68
 ColonCADSRStorage                                    1.2.840.10008.5.1.4.1.1.88.69
 ImplantationPlanSRDocumentStorage                    1.2.840.10008.5.1.4.1.1.88.70
+AcquisitionContextSRStorage                          1.2.840.10008.5.1.4.1.1.88.71
 EncapsulatedPDFStorage                               1.2.840.10008.5.1.4.1.1.104.1
 EncapsulatedCDAStorage                               1.2.840.10008.5.1.4.1.1.104.2
 PositronEmissionTomographyImageStorage               1.2.840.10008.5.1.4.1.1.128
@@ -616,6 +618,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 DRAFT_RTBeamsDeliveryInstructionStorage              1.2.840.10008.5.1.4.34.1
 RTBeamsDeliveryInstructionStorage                    1.2.840.10008.5.1.4.34.7
+RTBrachyApplicationSetupDeliveryInstructionStorage   1.2.840.10008.5.1.4.34.10
 GenericImplantTemplateStorage                        1.2.840.10008.5.1.4.43.1
 ImplantAssemblyTemplateStorage                       1.2.840.10008.5.1.4.44.1
 ImplantTemplateGroupStorage                          1.2.840.10008.5.1.4.45.1
@@ -705,4 +708,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBstorescu\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1996-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1996-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index b6ec6279e419d5b9a84829084df3d0e86498d0d1..8e93d363dfef174d1f60d13a6d71c18d05574dfb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "storescu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "storescu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 storescu \- DICOM storage (C-STORE) SCU
index ac0e7ddad95c9ddb6e1f75af991b94f68bd4ae13..e54e54aef1307e30633516b0a4bf9e94e1c116ef 100644 (file)
@@ -1,4 +1,4 @@
-.TH "termscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "termscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 termscu \- DICOM termination SCU
index 79acee42b61b168ab8e059807e50d12da92b072c..96fed186542194217688f5350dea6c1f9700b7ba 100644 (file)
@@ -1,4 +1,4 @@
-.TH "wlmscpfs" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "wlmscpfs" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 wlmscpfs \- DICOM Basic Worklist Management SCP (based on data files)
index b77b8e643ed18a2fe5518f00921ae6ead7081eec..70f905cdda640cec1f206ffc3e5ee0c910b36dd4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "xml2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "xml2dcm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 xml2dcm \- Convert XML document to DICOM file or data set
index cc6e4cede33e74bb181de9c8309edfe2688f0a78..b44ab9f739a6f3984e40bc2a58f1c61a1d62e8ff 100644 (file)
@@ -1,4 +1,4 @@
-.TH "xml2dsr" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "xml2dsr" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 xml2dsr \- Convert DICOM SR file and data set to XML
@@ -204,10 +204,14 @@ Cyrillic      "ISO_IR 144"  (ISO-8859-5)
 Arabic        "ISO_IR 127"  (ISO-8859-6)
 Greek         "ISO_IR 126"  (ISO-8859-7)
 Hebrew        "ISO_IR 138"  (ISO-8859-8)
+Thai          "ISO_IR 166"  (TIS-620)
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  (ISO-2022-JP)
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  (ISO-2022-KR)
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   (ISO-2022-CN)
+Chinese       "GB18030"     (GB18030)
+Chinese       "GBK"         (GBK)
 .fi
 .PP
-.PP
-Multiple character sets are not supported (only the first value of the 'Specific Character Set' is used for the character encoding in case of value multiplicity)\&.
 .SS "Compression"
 If libxml is compiled with zlib support, the input file (\fIxmlfile-in\fP) can also be compressed with ZIP, which usually results in much smaller files\&. See output of option \fI--version\fP in order to check whether zlib support is available\&.
 .SS "Limitations"
@@ -239,4 +243,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdsr2xml\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2003-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2003-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index da89a876f61de1b66dc9f3082960969a5a0d482c..79ae7ff4810232bb57f55d55527cb991b490bc2b 100644 (file)
@@ -929,6 +929,8 @@ oflog.o: oflog.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../ofstd/include/dcmtk/ofstd/oftime.h ../include/dcmtk/oflog/oflog.h \
  ../include/dcmtk/oflog/logger.h ../include/dcmtk/oflog/config.h \
@@ -1281,6 +1283,8 @@ strhelp.o: strhelp.cc ../include/dcmtk/oflog/helpers/strhelp.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/oflog/internal/internal.h ../include/dcmtk/oflog/ndc.h \
  ../include/dcmtk/oflog/mdc.h ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
index 453f149dc64ac2097181f073e2c353dc19a66e6c..dbf18079338a5165193e165ae21073c2bd838230 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2012, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -217,9 +217,10 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
      *                      encoding specified by 'codePage')
      *  @param  toString    reference to variable in which the pointer to the
      *                      converted string (using the UTF-16 character
-     *                      encoding) is stored.  Might be NULL in case of
-     *                      error.  Please note that the buffer is created
-     *                      with new[] and has to be deleted by the caller.
+     *                      encoding) is stored.  Might only be NULL if memory
+     *                      is exhausted.  Please note that the buffer is
+     *                      created with new[] and has to be deleted by the
+     *                      caller.
      *  @param  toLength    number of converted characters, i.e.\ length of
      *                      'toString'
      *  @param  codePage    identifier of the code page to be used for the
@@ -246,9 +247,10 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
      *                      without the trailing NULL byte)
      *  @param  toString    reference to variable in which the pointer to the
      *                      converted string (using the UTF-16 character
-     *                      encoding) is stored.  Might be NULL in case of
-     *                      error.  Please note that the buffer is created
-     *                      with new[] and has to be deleted by the caller.
+     *                      encoding) is stored.  Might only be NULL if memory
+     *                      is exhausted.  Please note that the buffer is
+     *                      created with new[] and has to be deleted by the
+     *                      caller.
      *  @param  toLength    number of converted characters, i.e.\ length of
      *                      'toString'
      *  @param  codePage    identifier of the code page to be used for the
index b9fbfae0796cfffadb34a000bc025f081ffee573..af92ba733ae71dbc5e61a586cf1600488d2e6241 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2012, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -204,7 +204,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
         PVS_Overflow
     };
 
-    /** mode for findOption method
+    /** mode for findOption() method
      */
     enum E_FindOptionMode
     {
@@ -264,7 +264,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr    description of command line option (use '\\n' for line break)
      *  @param  flags       optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const char *shortOpt,
@@ -281,7 +281,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr  description of command line option (use '\\n' for line break)
      *  @param  flags     optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const char *shortOpt,
@@ -297,7 +297,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr    description of command line option (use '\\n' for line break)
      *  @param  flags       optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const int valueCount,
@@ -312,7 +312,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr  description of command line option (use '\\n' for line break)
      *  @param  flags     optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const char *optDescr,
@@ -485,7 +485,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdSignedInt &value);
@@ -497,7 +498,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMin(const int pos,
                                            OFCmdSignedInt &value,
@@ -509,9 +511,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMinMax(const int pos,
                                               OFCmdSignedInt &value,
@@ -525,7 +528,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdUnsignedInt &value);
@@ -539,7 +543,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMin(const int pos,
                                            OFCmdUnsignedInt &value,
@@ -553,9 +558,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMinMax(const int pos,
                                               OFCmdUnsignedInt &value,
@@ -567,7 +573,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdFloat &value);
@@ -579,7 +586,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMin(const int pos,
                                            OFCmdFloat &value,
@@ -591,9 +599,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMinMax(const int pos,
                                               OFCmdFloat &value,
@@ -605,7 +614,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 const char *&value);
@@ -615,19 +625,21 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdString &value);
 
     /** gets value of specified parameter as an instance of OFFilename.
-     *  Please note that on Windows systems the returned filename might also contain a wide character
-     *  version (UTF-16) as an alternative representation.  See getWideCharMode().
+     *  Please note that on Windows systems the returned filename might also contain a wide
+     *  character version (UTF-16) as an alternative representation.  See getWideCharMode().
      *
-     ** @param  pos    position of parameter (1..n)
-     *  @param  value  reference to variable where the value should be stored
+     ** @param  pos       position of parameter (1..n)
+     *  @param  filename  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFFilename &filename);
@@ -640,14 +652,15 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  predecessor of the optional defined reference parameter 'pos') and goes to the
      *  first one.
      *
-     ** @param  longOpt    name of option (in long format) to be checked
-     *  @param  pos        position of reference parameter
-     *                     (default: all parameters; if value is negative option must be a direct
-     *                      predecessor of the specified reference parameter '-pos', no further
-     *                      search processes will be performed; if search direction is left to right
-     *                      this parameter is ignored, also option blocks are not supported in this
-     *                      case)
-     *  @param  mode       find option mode (used to support option blocks and reverse search direction)
+     ** @param  longOpt  name of option (in long format) to be checked
+     *  @param  pos      position of reference parameter
+     *                   (default: all parameters; if value is negative option must be a
+     *                    direct predecessor of the specified reference parameter '-pos',
+     *                    no further search processes will be performed; if search direction
+     *                    is left to right this parameter is ignored, also option blocks are
+     *                    not supported in this case)
+     *  @param  mode     find option mode (used to support option blocks and reverse search
+     *                   direction)
      *
      ** @return OFTrue if option exists, OFFalse otherwise
      */
@@ -704,7 +717,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to signed integer variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdSignedInt &value);
 
@@ -714,7 +728,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMin(OFCmdSignedInt &value,
                                       const OFCmdSignedInt low,
@@ -724,9 +739,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to signed integer variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMinMax(OFCmdSignedInt &value,
                                          const OFCmdSignedInt low,
@@ -736,7 +752,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to unsigned integer variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdUnsignedInt &value);
 
@@ -746,7 +763,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMin(OFCmdUnsignedInt &value,
                                       const OFCmdUnsignedInt low,
@@ -756,9 +774,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to unsigned integer variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMinMax(OFCmdUnsignedInt &value,
                                          const OFCmdUnsignedInt low,
@@ -768,7 +787,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to floating point variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdFloat &value);
 
@@ -778,7 +798,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMin(OFCmdFloat &value,
                                       const OFCmdFloat low,
@@ -788,9 +809,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to floating point variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMinMax(OFCmdFloat &value,
                                          const OFCmdFloat low,
@@ -800,7 +822,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to C string variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(const char *&value);
 
@@ -808,17 +831,19 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to C++ string variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdString &value);
 
     /** returns next argument as an instance of OFFilename.
-     *  Please note that on Windows systems the returned filename might also contain a wide character
-     *  version (UTF-16) as an alternative representation.  See getWideCharMode().
+     *  Please note that on Windows systems the returned filename might also contain a wide
+     *  character version (UTF-16) as an alternative representation.  See getWideCharMode().
      *
-     ** @param  value  reference to variable where the value should be stored
+     ** @param  filename  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFFilename &filename);
 
@@ -826,16 +851,18 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
  // --- parsing command line
 
     /** parses specified command line arguments (argc, argv).  Sets 'WideCharMode' to OFFalse.
-     *  Additionally, create internal structures for evaluation and return status indicating any errors
-     *  that occurred during the parse process.
+     *  Additionally, create internal structures for evaluation and return status indicating
+     *  any errors that occurred during the parse process.
      *
      ** @param  argCount  number of command line arguments stored in argValue
      *  @param  argValue  array where the command line arguments are stored
      *  @param  flags     optional flags affecting the parse process (see PF_xxx below)
-     *  @param  startPos  index of first argument which should be parsed (starting from 0, default: 1)
+     *  @param  startPos  index of first argument which should be parsed (starting from 0,
+     *                    default: 1)
      *
-     ** @return status of parse process, PS_Normal if successful (use getStatusString for error string).
-     *          If an exclusive option is used the status code PS_ExclusiveOption is returned.
+     ** @return status of parse process, PS_Normal if successful
+     *          (use getStatusString() for error string).  If an exclusive option is used,
+     *           the status code PS_ExclusiveOption is returned.
      */
     E_ParseStatus parseLine(int argCount,
                             char *argValue[],
@@ -845,20 +872,22 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
 #ifdef DCMTK_USE_WCHAR_T
 
     /** parses specified command line arguments (argc, argv).  Sets 'WideCharMode' to OFTrue.
-     *  This is a Windows-specific version supporting the wide character encoding (UTF-16).  Internally,
-     *  all character strings are stored in UTF-8, because this Unicode encoding is supported by DICOM.
-     *  However, there are getValue() and getParam() methods that allow for accessing filenames with
-     *  wide character encoding (UTF-16).
-     *  Additionally, create internal structures for evaluation and return status indicating any errors
-     *  that occurred during the parse process.
+     *  This is a Windows-specific version supporting the wide character encoding (UTF-16).
+     *  Internally, all character strings are stored in UTF-8, because this Unicode encoding is
+     *  supported by DICOM.  However, there are getValue() and getParam() methods that allow for
+     *  accessing filenames with wide character encoding (UTF-16).
+     *  Additionally, create internal structures for evaluation and return status indicating any
+     *  errors that occurred during the parse process.
      *
      ** @param  argCount  number of command line arguments stored in argValue
      *  @param  argValue  array where the command line arguments are stored
      *  @param  flags     optional flags affecting the parse process (see PF_xxx below)
-     *  @param  startPos  index of first argument which should be parsed (starting from 0, default: 1)
+     *  @param  startPos  index of first argument which should be parsed (starting from 0,
+     *                    default: 1)
      *
-     ** @return status of parse process, PS_Normal if successful (use getStatusString for error string).
-     *          If an exclusive option is used the status code PS_ExclusiveOption is returned.
+     ** @return status of parse process, PS_Normal if successful
+     *          (use getStatusString() for error string).  If an exclusive option is used,
+     *           the status code PS_ExclusiveOption is returned.
      */
     E_ParseStatus parseLine(int argCount,
                             wchar_t *argValue[],
@@ -871,15 +900,16 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
  // --- get usage/status strings
 
     /** returns command line syntax as a C++ string (single text line).
-     *  Text consists of "[options]" (if defined by addOption) and all parameters defined by addParam.
+     *  Text consists of "[options]" (if defined by addOption()) and all parameters defined
+     *  by addParam().
      *
      ** @param  syntaxStr  reference to C++ string where the text should be stored
      */
     void getSyntaxString(OFString &syntaxStr) const;
 
     /** returns description of all options as a C++ string (multiple text lines).
-     *  Text consists of group headings, short and long option names, option descriptions and additional
-     *  option values.
+     *  Text consists of group headings, short and long option names, option descriptions and
+     *  additional option values.
      *
      ** @param  optionStr  reference to C++ string where the text should be stored
      */
@@ -892,32 +922,32 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      */
     void getParamString(OFString &paramStr) const;
 
-    /** returns status of parseLine as a C++ string
+    /** returns status of parseLine() as a C++ string
      *
-     ** @param  status     value returned by method parseLine
+     ** @param  status     value returned by method parseLine()
      *  @param  statusStr  reference to C++string where the text should be stored
      */
     void getStatusString(const E_ParseStatus status,
                          OFString &statusStr);
 
-    /** returns status of getParam as a C++ string
+    /** returns status of getParam() as a C++ string
      *
-     ** @param  status     value returned by method getParam
+     ** @param  status     value returned by method getParam()
      *  @param  statusStr  reference to C++string where the text should be stored
      */
     void getStatusString(const E_ParamValueStatus status,
                          OFString &statusStr);
 
-    /** returns status of getValue as a C++ string
+    /** returns status of getValue() as a C++ string
      *
-     ** @param  status     value returned by method getValue
+     ** @param  status     value returned by method getValue()
      *  @param  statusStr  reference to C++string where the text should be stored
      */
     void getStatusString(const E_ValueStatus status,
                          OFString &statusStr);
 
 
- // --- flags (used for method parseLine)
+ // --- flags (used for method parseLine())
 
     /// parsing flag to expand wildcard under Windows.
     /// (not used anymore, only available for reasons of backward compatibility;
@@ -926,9 +956,9 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
     /// disable support for command files ("@filename") containing additional arguments
     static const int PF_NoCommandFiles;
 
- // --- flags (used for method addOption)
+ // --- flags (used for method addOption())
 
-    /// exclusive option that overrides any other option (e.g. "--help")
+    /// exclusive option that overrides any other option (e.g.\ "--help")
     static const int AF_Exclusive;
     /// internal option that is not shown in the syntax usage output
     static const int AF_Internal;
@@ -939,7 +969,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
 
  protected:
 
-    /** checks whether given option is valid (starting with an option char and not followed by a number)
+    /** checks whether given option is valid (starting with an option char and not
+     *  followed by a number)
      */
     OFBool checkOption(const OFString &option,
                        const OFBool mode = OFTrue) const;
@@ -990,7 +1021,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
                             unsigned int &longCols,
                             unsigned int &shortCols) const;
 
-    /** checks whether number of parameters in parsed command line is within the range of min/max (see below)
+    /** checks whether number of parameters in parsed command line is within the range
+     *  of min/max (see below)
      */
     E_ParseStatus checkParamCount();
 
@@ -998,7 +1030,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      */
     OFBool getLastArg(OFString &arg);
 
-    /** returns name of parameter which is missed in the parsed command line (used for error output)
+    /** returns name of parameter which is missed in the parsed command line
+     *  (used for error output)
      */
     OFBool getMissingParam(OFString &param);
 
@@ -1033,7 +1066,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
 
     /// OFTrue if option block is active, OFFalse otherwise
     OFBool OptionBlockMode;
-    /// C++ string conisting of all valid characters introducing an option
+    /// C++ string consisting of all valid characters introducing an option
     OFString OptionChars;
 
     /// OFTrue if an "exclusive" option is used in the command line, OFFalse otherwise
index 4b9e88d9cb0c1dee4f53a06c50b68a05319f7773..abb71bf72e3d81e47a0d3f71b60b0428a7634ed8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2006-2014, OFFIS e.V.
+ *  Copyright (C) 2006-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -140,7 +140,7 @@ public:
    *    alternative representation.  Only works on Windows systems.
    */
   OFFilename(const wchar_t *filename,
-             const OFBool convert = OFFalse);
+             const OFBool convert = OFTrue);
 #endif
 
   /** copy constructor
@@ -226,7 +226,7 @@ public:
    *    representation.  Only works on Windows systems.
    */
   void set(const wchar_t *filename,
-           const OFBool convert = OFFalse);
+           const OFBool convert = OFTrue);
 #endif
 
 private:
diff --git a/ofstd/include/dcmtk/ofstd/ofmath.h b/ofstd/include/dcmtk/ofstd/ofmath.h
new file mode 100644 (file)
index 0000000..288503a
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ *
+ *  Copyright (C) 2015, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Jan Schlamelcher
+ *
+ *  Purpose: Platform independent definition of basic functions declared
+ *           in <math.h> resp. <cmath>.
+ *
+ */
+
+
+#ifndef OFMATH_H
+#define OFMATH_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/oftypes.h"    /* for OFBool */
+#include "dcmtk/ofstd/oftraits.h"   /* for OFenable_if, ... */
+
+class DCMTK_OFSTD_EXPORT OFMath
+{
+
+public:
+
+#ifndef DOXYGEN
+    static OFBool (isnan) (float f);
+    static OFBool (isnan) (double d);
+    template<typename Integer>
+    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
+    (isnan) ( const Integer i ) { return (isnan) ( OFstatic_cast( double, i ) ); }
+
+    static OFBool (isinf) (float f);
+    static OFBool (isinf) (double d);
+    template<typename Integer>
+    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
+    (isinf) ( const Integer i ) { return (isinf) ( OFstatic_cast( double, i ) ); }
+#else
+    /** Determines if the given floating point number is a not-a-number (NaN) value.
+     *  @param f the floating point value to inspect.
+     *  @return OFTrue if f is a NaN, OFFalse otherwise.
+     */
+    static OFBool isnan( float f );
+
+    /** Determines if the given floating point number is a not-a-number (NaN) value.
+     *  @param d the floating point value to inspect.
+     *  @return OFTrue if d is a NaN, OFFalse otherwise.
+     */
+    static OFBool isnan( double d );
+
+    /** Casts the argument to double and calls OFMath::isnan(double) on the result.
+     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
+     *  @return OFMath::isnan(OFstatic_cast(double,i)).
+     */
+    template<typename Integer>
+    static OFBool isnan( Integer i );
+
+    /** Determines if the given floating point number is a positive or negative infinity.
+     *  @param f the floating point value to inspect.
+     *  @return OFTrue if f is infinite, OFFalse otherwise.
+     */
+    static OFBool isinf( float f );
+
+    /** Determines if the given floating point number is a positive or negative infinity.
+     *  @param d the floating point value to inspect.
+     *  @return OFTrue if d is infinite, OFFalse otherwise.
+     */
+    static OFBool isinf( double d );
+
+    /** Casts the argument to double and calls OFMath::isinf(double) on the result.
+     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
+     *  @return OFMath::isinf(OFstatic_cast(double,i)).
+     */
+    template<typename Integer>
+    static OFBool isinf( Integer i );
+#endif
+};
+
+#endif // OFMATH_H
index cf0da107bbb6319931f2326f022d3fb7e2b5466f..ba5f518e3d4eb3db287ea761b907cd7a16cb951c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2011, OFFIS e.V.
+ *  Copyright (C) 1997-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/ofstd/ofdefine.h"
 
 #if defined(HAVE_STL) || defined(HAVE_STL_STACK)
-// It is possible to use the standard template library list class since the 
+// It is possible to use the standard template library list class since the
 // interface is nearly identical.
 // Important: If you want to use the standard template library, no variable
-// in a namespace with using a list shall have the name stack 
+// in a namespace with using a list shall have the name stack
 #include <stack>
 #define OFStack std::stack
 #else
@@ -47,7 +47,7 @@
 #endif
 
 
-/**  non-template single linked list class, used to store elements of a stack.
+/** non-template single linked list class, used to store elements of a stack.
  *  Implicitly used by OFStack, should not be called by users.
  */
 struct OFStackLinkBase
@@ -67,10 +67,10 @@ struct OFStackLinkBase
     }
 private:
 
-    /// private undefined copy constructor 
+    /// private undefined copy constructor
     OFStackLinkBase(const OFStackLinkBase &);
 
-    /// private undefined copy assignment operator 
+    /// private undefined copy assignment operator
     OFStackLinkBase &operator=(const OFStackLinkBase &);
 };
 
@@ -95,7 +95,7 @@ public:
     }
 
     /** checks if the stack is empty
-     *  @return true if stack is emtpy, false otherwise
+     *  @return true if stack is empty, false otherwise
      */
     OFBool base_empty() const { return head == NULL; }
 
@@ -106,11 +106,22 @@ public:
 
     /** returns element on top of stack.
      *  precondition: stack is not empty
+     *  @return element on top of stack.
      */
-    OFStackLinkBase * base_top() 
+    OFStackLinkBase * base_top()
     {
-    assert(head!=NULL);
-    return head;
+      assert(head!=NULL);
+      return head;
+    }
+
+    /** returns element on top of stack.
+     *  precondition: stack is not empty
+     *  @return element on top of stack.
+     */
+    const OFStackLinkBase * base_top() const
+    {
+      assert(head!=NULL);
+      return head;
     }
 
     /** pushes element onto stack.
@@ -122,7 +133,7 @@ public:
       head = element;
       stackSize++;
     }
-    
+
     /** removes top element from stack.
      *  precondition: stack not empty.
      */
@@ -139,16 +150,16 @@ protected:
 
     /// pointer to top element of stack
     OFStackLinkBase * head;
-    
+
     /// size of stack
     size_t stackSize;
 
 private:
-    /// private undefined copy constructor 
+
+    /// private undefined copy constructor
     OFStackBase(const OFStackBase &);
 
-    /// private undefined copy assignment operator 
+    /// private undefined copy assignment operator
     OFStackBase &operator=(const OFStackBase &);
 
 };
@@ -173,11 +184,11 @@ struct OFStackLink : public OFStackLinkBase
     }
 
 private:
-    /// private undefined copy constructor 
+
+    /// private undefined copy constructor
     OFStackLink(const OFStackLink<T> &);
 
-    /// private undefined copy assignment operator 
+    /// private undefined copy assignment operator
     OFStackLink<T> &operator=(const OFStackLink<T> &);
 };
 
@@ -192,7 +203,7 @@ class OFStack : private OFStackBase
 
 public:
 
-    /// Default constructor
+    /// default constructor
     OFStack() {};
 
     /// copy constructor
@@ -201,7 +212,7 @@ public:
         copy(x);
     }
 
-    /// Assignment operator
+    /// assignment operator
     OFStack<T> &operator=(const OFStack<T> &x)
     {
         if (this != &x)
@@ -227,28 +238,37 @@ public:
      *  This method may not be called if the stack is empty.
      *  @return reference to top element
      */
-    T & top() 
-    { 
-        return (OFstatic_cast(OFStackLink<T> *, OFStackBase::base_top()))->info; 
+    T & top()
+    {
+        return (OFstatic_cast(OFStackLink<T> *, OFStackBase::base_top()))->info;
+    }
+
+    /** returns a const reference to the top element on the stack.
+     *  This method may not be called if the stack is empty.
+     *  @return const reference to top element
+     */
+    const T & top() const
+    {
+        return (OFstatic_cast(const OFStackLink<T> *, OFStackBase::base_top()))->info;
     }
 
     /** inserts a new element on top of the stack. The value of
      *  the new element is copy constructed from the given argument.
      *  @param x value to be pushed (copied) onto the stack
      */
-    void push(const T & x) 
-    { 
+    void push(const T & x)
+    {
         OFStackBase::base_push(new OFStackLink<T>(x));
     }
 
     /** removes the top element from the stack.
      *  This method may not be called if the stack is empty.
-     */    
+     */
     void pop() { OFStackBase::base_pop(); }
 
 private:
 
-    /** copy assignment of a stack. 
+    /** copy assignment of a stack.
      *  @param x stack to be copied
      *  @return dummy value, required to keep Sun CC 2.0.1 happy
      */
@@ -262,8 +282,7 @@ private:
             OFStackLinkBase * oldPtr = x.head->next;
             while (oldPtr)
             {
-            newPtr->next = 
-                new OFStackLink<T>((OFstatic_cast(OFStackLink<T>*, oldPtr))->info);
+            newPtr->next = new OFStackLink<T>((OFstatic_cast(OFStackLink<T>*, oldPtr))->info);
             oldPtr = oldPtr->next;
             newPtr = newPtr->next;
             }
index d599d5c125074e2e99518157ee626c9c00b5aa28..6f240499d24e88b43c3937817c25128d10704f0c 100644 (file)
@@ -30,7 +30,9 @@
 #include "dcmtk/ofstd/oftypes.h"    /* for OFBool */
 #include "dcmtk/ofstd/oftraits.h"   /* for OFenable_if, ... */
 #include "dcmtk/ofstd/ofcond.h"     /* for OFCondition */
+#include "dcmtk/ofstd/oflimits.h"   /* for OFnumeric_limits<T>::max() */
 
+#define INCLUDE_CASSERT
 #define INCLUDE_CSTDLIB
 #define INCLUDE_CSTDIO
 #define INCLUDE_CSTRING
@@ -629,7 +631,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
 
     /** convert character string to an octal format stream.
      *  All non-ASCII and control characters (code < #32 and >= #127) are converted to their
-     *  octal representation, i.e. to '\ooo' where 'ooo' are the three octal digits of the
+     *  octal representation, i.e. to '\\ooo' where 'ooo' are the three octal digits of the
      *  character.  All other characters are output as is.  See section 6.1.2.3 in DICOM PS 3.5.
      ** @param out stream used for the output
      *  @param sourceString source string to be converted.  May contain one or more NULL bytes.
@@ -643,7 +645,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
 
     /** convert character string to an octal format string.
      *  All non-ASCII and control characters (code < #32 and >= #127) are converted to their
-     *  octal representation, i.e. to '\ooo' where 'ooo' are the three octal digits of the
+     *  octal representation, i.e. to '\\ooo' where 'ooo' are the three octal digits of the
      *  character.  All other characters are output as is.  See section 6.1.2.3 in DICOM PS 3.5.
      ** @param sourceString source string to be converted.  May contain one or more NULL bytes.
      *  @param octalString reference to character string where the result should be stored
@@ -707,59 +709,6 @@ class DCMTK_OFSTD_EXPORT OFStandard
     static size_t decodeBase64(const OFString &data,
                                unsigned char *&result);
 
-
-#ifndef DOXYGEN
-    static OFBool (isnan) (float f);
-    static OFBool (isnan) (double d);
-    template<typename Integer>
-    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
-    (isnan) ( const Integer i ) { return (isnan) ( OFstatic_cast( double, i ) ); }
-
-    static OFBool (isinf) (float f);
-    static OFBool (isinf) (double d);
-    template<typename Integer>
-    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
-    (isinf) ( const Integer i ) { return (isinf) ( OFstatic_cast( double, i ) ); }
-#else
-    /** Determines if the given floating point number is a not-a-number (NaN) value.
-     *  @param f the floating point value to inspect.
-     *  @return OFTrue if f is a NaN, OFFalse otherwise.
-     */
-    static OFBool isnan( float f );
-
-    /** Determines if the given floating point number is a not-a-number (NaN) value.
-     *  @param d the floating point value to inspect.
-     *  @return OFTrue if d is a NaN, OFFalse otherwise.
-     */
-    static OFBool isnan( double d );
-
-    /** Casts the argument to double and calls OFStandard::isnan(double) on the result.
-     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
-     *  @return OFStandard::isnan(OFstatic_cast(double,i)).
-     */
-    template<typename Integer>
-    static OFBool isnan( Integer i );
-
-    /** Determines if the given floating point number is a positive or negative infinity.
-     *  @param f the floating point value to inspect.
-     *  @return OFTrue if f is infinite, OFFalse otherwise.
-     */
-    static OFBool isinf( float f );
-
-    /** Determines if the given floating point number is a positive or negative infinity.
-     *  @param d the floating point value to inspect.
-     *  @return OFTrue if d is infinite, OFFalse otherwise.
-     */
-    static OFBool isinf( double d );
-
-    /** Casts the argument to double and calls OFStandard::isinf(double) on the result.
-     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
-     *  @return OFStandard::isinf(OFstatic_cast(double,i)).
-     */
-    template<typename Integer>
-    static OFBool isinf( Integer i );
-#endif
-
     /** converts a floating-point number from an ASCII
      *  decimal representation to internal double-precision format.
      *  Unlike the atof() function defined in Posix, this implementation
@@ -879,7 +828,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
      */
     static long getProcessID();
 
-     /** check whether the addition of two 32-bit integers yields in an overflow
+    /** check whether the addition of two 32-bit integers yields in an overflow
      *  @param summand1 first integer value to be added
      *  @param summand2 second integer value to be added
      *  @return OFTrue if an overflow occurred during the addition, OFFalse otherwise
@@ -890,6 +839,51 @@ class DCMTK_OFSTD_EXPORT OFStandard
       return (0xffffffff - summand1 < summand2);
     }
 
+    /** check whether subtraction is safe (i.e.\ no underflow occurs) and if so,
+     *  perform it (i.e.\ compute minuend-subtrahend=difference). Only works for
+     *  unsigned types.
+     *  @param minuend number to subtract from
+     *  @param subtrahend number to subtract from minuend
+     *  @param difference difference, if subtraction is safe, otherwise the
+     *    parameter value is not touched by the function
+     *  @return OFTrue if subtraction is safe and could be performed, OFFalse
+     *   otherwise
+     */
+    template <typename T>
+    static OFBool
+    safeSubtract(T minuend, T subtrahend, T& difference)
+    {
+      assert(!OFnumeric_limits<T>::is_signed);
+      if (minuend < subtrahend) {
+        return OFFalse;
+      } else {
+        difference = minuend - subtrahend;
+        return OFTrue;
+      }
+    }
+
+    /** check whether addition is safe (i.e.\ no overflow occurs) and if so,
+     *  perform it (i.e.\ compute a+b=sum). Only works for unsigned types.
+     *  @param a first number to add
+     *  @param b second number to add
+     *  @param sum resulting sum of both numbers, if addition is safe, otherwise
+     *    parameter value is not touched by the function
+     *  @return OFTrue if addition is safe and could be performed, OFFalse
+     *    otherwise
+     */
+    template <typename T>
+    static OFBool
+    safeAdd(T a, T b, T& sum)
+    {
+      assert(!OFnumeric_limits<T>::is_signed);
+      if (OFnumeric_limits<T>::max() - a < b) {
+        return OFFalse;
+      } else {
+        sum = a + b;
+        return OFTrue;
+      }
+    }
+
     /** Thread-safe version of gethostbyname.
      *  @param name the host name.
      *  @return a OFStandard::OFHostent object.
@@ -918,7 +912,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
 
     /** On Posix-like platform, this method executes setuid(getuid()),
      *  which causes the application to revert from root privileges to
-     *  thos of the calling user when the program is installed as
+     *  those of the calling user when the program is installed as
      *  setuid root. DCMTK command line tools that open a socket for
      *  incoming DICOM network connections will call this method immediately
      *  after opening the socket. Since DICOM by default operates on
index aaab514a91dfd5543aff2b90730385935b77d0f2..f0454062a96543f64bfc3cc719acb1abc95f4b37 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -84,7 +84,7 @@ public:
     /** Create a new temporary file.
      *  @param fileName after this call, this will contain the name of the file
      *         that was created
-     *  @param fd if not NULL, this will be set to a file descriptor for this
+     *  @param fd_out if not NULL, this will be set to a file descriptor for this
      *         file
      *  @param flags additional flags to pass to open() as its third argument
      *  @param dir the directory in which the file should be created.
index 6093009111f3ee9a016a5ca7d9d65ee437f57791..277ff0ec5c32d4659023976f202e59acd6cac701 100644 (file)
@@ -4,7 +4,9 @@ ofchrenc.o: ofchrenc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftraits.h
+ ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftraits.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 ofcmdln.o: ofcmdln.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -13,7 +15,9 @@ ofcmdln.o: ofcmdln.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofchrenc.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofchrenc.h
 ofconapp.o: ofconapp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofconapp.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -23,6 +27,8 @@ ofconapp.o: ofconapp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/ofstd.h \
  ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/ofstd/ofchrenc.h
 ofcond.o: ofcond.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftypes.h \
@@ -62,40 +68,44 @@ offile.o: offile.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/ofstd/ofstream.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 offname.o: offname.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/offname.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/ofstd/ofstream.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 oflist.o: oflist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/ofstd/ofstream.h
 ofmath.o: ofmath.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
+ ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/ofstd/ofmath.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
- ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/oftraits.h
 ofstd.o: ofstd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
  ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/offile.h \
- ../include/dcmtk/ofstd/oftuple.h ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/oftuple.h \
+ ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../include/dcmtk/ofstd/variadic/tuplefrd.h \
- ../include/dcmtk/ofstd/variadic/tuple.h ../include/dcmtk/ofstd/ofnetdb.h \
- ../include/dcmtk/ofstd/ofvector.h ../include/dcmtk/ofstd/ofgrp.h \
- ../include/dcmtk/ofstd/ofpwd.h ../include/dcmtk/ofstd/ofoption.h \
- ../include/dcmtk/ofstd/ofalign.h
+ ../include/dcmtk/ofstd/variadic/tuple.h ../include/dcmtk/ofstd/ofmath.h \
+ ../include/dcmtk/ofstd/ofnetdb.h ../include/dcmtk/ofstd/ofvector.h \
+ ../include/dcmtk/ofstd/ofgrp.h ../include/dcmtk/ofstd/ofpwd.h \
+ ../include/dcmtk/ofstd/ofoption.h ../include/dcmtk/ofstd/ofalign.h
 ofstring.o: ofstring.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -108,22 +118,26 @@ oftempf.o: oftempf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/offname.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/ofstd/oftraits.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 ofthread.o: ofthread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstd.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/ofstd/ofconsol.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/ofconsol.h
 oftime.o: oftime.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/oftime.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 oftimer.o: oftimer.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftimer.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -135,7 +149,8 @@ ofuuid.o: ofuuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstream.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/ofstd.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 ofxml.o: ofxml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofxml.h ../include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
index 3fb4091fb2523c83d8135e04c8ddd849b6c223ea..26230d4762f04169505fc044db2433f5a09a086a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -109,6 +109,8 @@ OFCondition OFCharacterEncoding::setTransliterationMode(const OFBool mode)
     TransliterationMode = mode;
     return EC_Normal;
 #else
+    // avoid compiler warning on unused variable
+    (void)mode;
     // return with an error because iconvctl() is not supported
     return makeOFCondition(0, EC_CODE_CannotControlConverter, OF_error,
         "Cannot control character encoding converter: iconvctl() not supported");
@@ -122,6 +124,8 @@ OFCondition OFCharacterEncoding::setDiscardIllegalSequenceMode(const OFBool mode
     DiscardIllegalSequenceMode = mode;
     return EC_Normal;
 #else
+    // avoid compiler warning on unused variable
+    (void)mode;
     // return with an error because iconvctl() is not supported
     return makeOFCondition(0, EC_CODE_CannotControlConverter, OF_error,
         "Cannot control character encoding converter: iconvctl() not supported");
@@ -158,6 +162,9 @@ OFCondition OFCharacterEncoding::selectEncoding(const OFString &fromEncoding,
     // then, try to open a new descriptor for the specified character encodings
     return openDescriptor(ConversionDescriptor, fromEncoding.c_str(), toEncoding.c_str());
 #else
+    // avoid compiler warning on unused variables
+    (void)fromEncoding;
+    (void)toEncoding;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -253,6 +260,12 @@ OFCondition OFCharacterEncoding::convertString(T_Descriptor descriptor,
         status = EC_NoEncodingSelected;
     return status;
 #else
+    // avoid compiler warning on unused variables
+    (void)descriptor;
+    (void)fromString;
+    (void)fromLength;
+    (void)toString;
+    (void)clearMode;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -374,6 +387,9 @@ OFCondition OFCharacterEncoding::openDescriptor(T_Descriptor &descriptor,
     return status;
 #else
     descriptor = ILLEGAL_DESCRIPTOR;
+    // avoid compiler warning on unused variables
+    (void)fromEncoding;
+    (void)toEncoding;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -415,6 +431,8 @@ OFBool OFCharacterEncoding::isDescriptorValid(const T_Descriptor descriptor)
 #ifdef WITH_LIBICONV
     return (descriptor != ILLEGAL_DESCRIPTOR);
 #else
+    // avoid compiler warning on unused variable
+    (void)descriptor;
     return OFFalse;
 #endif
 }
@@ -428,6 +446,11 @@ void OFCharacterEncoding::createErrnoCondition(OFCondition &status,
     char errBuf[256];
     message.append(OFStandard::strerror(errno, errBuf, sizeof(errBuf)));
     status = makeOFCondition(0, code, OF_error, message.c_str());
+#else
+    // avoid compiler warning on unused variables
+    (void)status;
+    (void)message;
+    (void)code;
 #endif
 }
 
index 5e7ef7225e10352dc2b879cc2a4a469c10a02174..c1b650f36791768de894a8ec99c960bfc255f6ab 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2012, OFFIS e.V.
+ *  Copyright (C) 1998-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1254,7 +1254,7 @@ OFCommandLine::E_ParseStatus OFCommandLine::parseCommandFile(const wchar_t *argV
 
 
 OFCommandLine::E_ParseStatus OFCommandLine::parseArgumentList(OFList<OFString> &argList,
-                                                              const int flags)
+                                                              const int /*flags*/)
 {
     ArgumentList.clear();                                                // initialize lists/positions
     ParamPosList.clear();
index 73a71c4de37be3f552dd5ed3cc3c0630b4556d28..a65b4510e8360fe7f955b64d8214bd534552d560 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -164,6 +164,8 @@ void OFFilename::set(const char *filename,
         }
 #endif
 #endif
+        /* avoid compiler warning on unused variable */
+        (void)convert;
     }
 }
 
@@ -193,6 +195,8 @@ void OFFilename::set(const wchar_t *filename,
             filename_ = strdup(tmpString.c_str());
         }
 #endif
+        /* avoid compiler warning on unused variable */
+        (void)convert;
     }
 }
 #endif
index 788df7519ce3539bd2039633b8c2c15d6e7b5eb0..90c9e616fab070ec4c6cd1c90f6aea3a6a84bd61 100644 (file)
@@ -25,8 +25,9 @@
 
 #define INCLUDE_CMATH
 #define INCLUDE_CFLOAT
+#define INCLUDE_IOSTREAM
 #include "dcmtk/ofstd/ofstdinc.h"
-#include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/ofstd/ofmath.h"
 
 #ifdef HAVE_WINDOWS_H
 #define WIN32_LEAN_AND_MEAN
@@ -87,7 +88,7 @@ static int my_isinf(double x)
 }
 #endif /* HAVE_ISINF */
 
-OFBool OFStandard::isnan( float f )
+OFBool OFMath::isnan( float f )
 {
 #ifdef HAVE_WINDOWS_H
   return _isnan(f) != 0;
@@ -98,7 +99,7 @@ OFBool OFStandard::isnan( float f )
 #endif
 }
 
-OFBool OFStandard::isnan( double d )
+OFBool OFMath::isnan( double d )
 {
 #ifdef HAVE_WINDOWS_H
   return _isnan(d) != 0;
@@ -109,7 +110,7 @@ OFBool OFStandard::isnan( double d )
 #endif
 }
 
-OFBool OFStandard::isinf( float f )
+OFBool OFMath::isinf( float f )
 {
 #ifdef HAVE_PROTOTYPE_STD__ISINF
   return STD_NAMESPACE isinf( f );
@@ -120,7 +121,7 @@ OFBool OFStandard::isinf( float f )
 #endif
 }
 
-OFBool OFStandard::isinf( double d )
+OFBool OFMath::isinf( double d )
 {
 #ifdef HAVE_PROTOTYPE_STD__ISINF
   return STD_NAMESPACE isinf( d );
index 45865cf7b08e49f96df106ea8cb5f6a1d34857b2..cb35fadd63743561f2f3693dd2a4b188dd4de255 100644 (file)
@@ -97,6 +97,7 @@
 #include "dcmtk/ofstd/offile.h"
 #include "dcmtk/ofstd/ofstream.h"
 #include "dcmtk/ofstd/oftuple.h"
+#include "dcmtk/ofstd/ofmath.h"
 
 #define INCLUDE_CMATH
 #define INCLUDE_CFLOAT
@@ -1973,14 +1974,14 @@ void OFStandard::ftoa(
   unsigned char fmtch = 'G';
 
   // check if val is NAN
-  if (isnan(val))
+  if (OFMath::isnan(val))
   {
     OFStandard::strlcpy(dst, "nan", siz);
     return;
   }
 
   // check if val is infinity
-  if (isinf(val))
+  if (OFMath::isinf(val))
   {
     if (val < 0)
         OFStandard::strlcpy(dst, "-inf", siz);
@@ -2398,14 +2399,14 @@ void OFStandard::ftoa(
   if (!dst || !siz) return;
 
   // check if val is NAN
-  if (OFStandard::isnan(val))
+  if (OFMath::isnan(val))
   {
     OFStandard::strlcpy(dst, "nan", siz);
     return;
   }
 
   // check if val is infinity
-  if (OFStandard::isinf(val))
+  if (OFMath::isinf(val))
   {
     if (val < 0)
         OFStandard::strlcpy(dst, "-inf", siz);
index b22afad1fa8650f8decc84645657c51141a713e5..9a1e43ceae66d0798e549028ab627966acd632a5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2015, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -296,7 +296,7 @@ void OFUUID::printHex(STD_NAMESPACE ostream& stream) const
     stream.fill(fill_char);
 }
 
-static void divide_by(Uint32 n, Uint32 d, Uint32& res, Uint32& rem)
+static void divide_by_10(Uint32 n, Uint32& res, Uint32& rem)
 {
     // This calculates res = m / d and rem = m % d where m = n + rem * 2^32
 
@@ -342,10 +342,10 @@ void OFUUID::printInteger(STD_NAMESPACE ostream& stream) const
     // As long as the result isn't 0, divide by 10 and print the remainder
     while (data[0] != 0 || data[1] != 0 || data[2] != 0 || data[3] != 0) {
         Uint32 rem = 0;
-        divide_by(data[0], 10, data[0], rem);
-        divide_by(data[1], 10, data[1], rem);
-        divide_by(data[2], 10, data[2], rem);
-        divide_by(data[3], 10, data[3], rem);
+        divide_by_10(data[0], data[0], rem);
+        divide_by_10(data[1], data[1], rem);
+        divide_by_10(data[2], data[2], rem);
+        divide_by_10(data[3], data[3], rem);
 
         assert(rem <= 9);
         buffer[--idx] = OFstatic_cast(char, rem + '0');
index 15aefe3a4083c610b8c130816cc884599d091d74..a272f8fb717334fc4921c72f88e948667d56f5b7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were slightly modified by
@@ -213,7 +213,8 @@ XMLCSTR XMLNode::getError(XMLError xerror)
 // If you plan to "port" the library to a new system/compiler, all you have to do is
 // to edit the following lines.
 #ifdef XML_NO_WIDE_CHAR
-char myIsTextWideChar(const void *b, int len) { return FALSE; }
+// DCMTK: uncomment parameter names to avoid compiler warnings
+char myIsTextWideChar(const void * /*b*/, int /*len*/) { return FALSE; }
 #else
     #if defined (UNDER_CE) || !defined(_XMLWINDOWS)
     char myIsTextWideChar(const void *b, int len) // inspired by the Wine API: RtlIsTextUnicode
@@ -317,7 +318,8 @@ char myIsTextWideChar(const void *b, int len) { return FALSE; }
 #else
 // for gcc and CC
     #ifdef XML_NO_WIDE_CHAR
-        char *myWideCharToMultiByte(const wchar_t *s) { return NULL; }
+        // DCMTK: uncomment parameter name to avoid compiler warning
+        char *myWideCharToMultiByte(const wchar_t * /*s*/) { return NULL; }
     #else
         char *myWideCharToMultiByte(const wchar_t *s)
         {
index 49a563fc683d0fca8ba25c6fcc12601736766cd0..b209f725151452a07dfd7ca1a42e9e640bf354d7 100644 (file)
@@ -1,13 +1,25 @@
+taddsub.o: taddsub.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
+ ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
+ ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
+ ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/oflist.h \
+ ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
+ ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tatof.o: tatof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
  ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftest.h \
- ../include/dcmtk/ofstd/ofconapp.h ../include/dcmtk/ofstd/ofcmdln.h \
- ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/ofstd/offile.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
+ ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h
 tbase64.o: tbase64.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -17,7 +29,8 @@ tbase64.o: tbase64.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tchrenc.o: tchrenc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -27,7 +40,9 @@ tchrenc.o: tchrenc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofchrenc.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofchrenc.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -37,7 +52,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tftoa.o: tftoa.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -47,7 +63,8 @@ tftoa.o: tftoa.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tlimits.o: tlimits.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -58,7 +75,8 @@ tlimits.o: tlimits.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
- ../../config/include/dcmtk/config/arith.h
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofmath.h
 tlist.o: tlist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -68,7 +86,9 @@ tlist.o: tlist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tmap.o: tmap.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -78,7 +98,8 @@ tmap.o: tmap.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofmap.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/ofstd/ofmap.h \
  ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h
 tmarkup.o: tmarkup.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -90,7 +111,8 @@ tmarkup.o: tmarkup.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tmem.o: tmem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -100,7 +122,8 @@ tmem.o: tmem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/ofstd/ofmem.h \
  ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h
 tofdatim.o: tofdatim.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -113,7 +136,9 @@ tofdatim.o: tofdatim.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 toffile.o: toffile.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -121,6 +146,8 @@ toffile.o: toffile.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstream.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
  ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/ofcmdln.h
@@ -130,10 +157,11 @@ tofstd.o: tofstd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcast.h ../include/dcmtk/ofstd/ofexport.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftest.h \
- ../include/dcmtk/ofstd/ofconapp.h ../include/dcmtk/ofstd/ofcmdln.h \
- ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/ofstd/offile.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
+ ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h
 toption.o: toption.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -143,8 +171,9 @@ toption.o: toption.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofoption.h \
- ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofoption.h ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../include/dcmtk/ofstd/ofalign.h
 tstack.o: tstack.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -156,7 +185,9 @@ tstack.o: tstack.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tstring.o: tstring.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -166,7 +197,8 @@ tstring.o: tstring.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tthread.o: tthread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -176,7 +208,8 @@ tthread.o: tthread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 ttuple.o: ttuple.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -186,8 +219,9 @@ ttuple.o: ttuple.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftuple.h \
- ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/oftuple.h ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../include/dcmtk/ofstd/variadic/tuplefrd.h \
  ../include/dcmtk/ofstd/variadic/tuple.h
@@ -200,7 +234,9 @@ tuuid.o: tuuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofuuid.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofuuid.h
 tvec.o: tvec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -210,7 +246,9 @@ tvec.o: tvec.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofvector.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofvector.h
 txml.o: txml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/oftypes.h ../include/dcmtk/ofstd/ofdefine.h \
@@ -220,4 +258,5 @@ txml.o: txml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/ofconsol.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofxml.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/ofstd/ofxml.h
diff --git a/ofstd/tests/taddsub.cc b/ofstd/tests/taddsub.cc
new file mode 100644 (file)
index 0000000..7cec09a
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ *
+ *  Copyright (C) 2015, Open Connections GmbH
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  ofstd
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: test program for safe subtraction and addition
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+#define OFTEST_OFSTD_ONLY
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/ofstd/ofstd.h"
+
+
+OFTEST(ofstd_safeSubtractAndAdd)
+{
+  // --------------- Subtraction ----------------
+
+  unsigned int a = 1;
+  unsigned int b = 2;
+  // check whether underflow occurs (it should)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, 1);
+
+  a = OFnumeric_limits<unsigned int>::max();
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether no underflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected
+  OFCHECK_EQUAL(a, 1);
+
+  // --------------- Addition ----------------
+
+  a = OFnumeric_limits<unsigned int>::max()-1;
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether overflow occured (it should)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max()-1);
+
+  b = 1; // a still equals max-1
+  // check whether no overflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected.
+  // dividing and then multiplying by 2 is required since max maybe be an
+  // odd number so that max/2 is rounded to the floor number.
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max());
+}
index 33638624b19bcf212d77850c299092ba58d431b2..b41e78d0c51fe2a009bbd534a5b984f2ed69a1fc 100644 (file)
@@ -77,4 +77,5 @@ OFTEST_REGISTER(ofstd_memory);
 OFTEST_REGISTER(ofstd_optional);
 OFTEST_REGISTER(ofstd_tuple);
 OFTEST_REGISTER(ofstd_limits);
+OFTEST_REGISTER(ofstd_safeSubtractAndAdd);
 OFTEST_MAIN("ofstd")
index e463afe55f10570d9fda948ae9aad4ffb717586b..c9107dcdbb0c51c543f5892a3d5942d11a4fddb4 100644 (file)
@@ -5,6 +5,7 @@
 #include "dcmtk/ofstd/oflimits.h"
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/oftraits.h"
+#include "dcmtk/ofstd/ofmath.h"   // for isinf and isnan
 
 template<typename T>
 static void checkMinMax()
@@ -14,12 +15,12 @@ static void checkMinMax()
     OFCHECK
     (
         OFnumeric_limits<T>::max() >= max_plus_one ||
-        ( OFnumeric_limits<T>::has_infinity && OFStandard::isinf( max_plus_one ) )
+        ( OFnumeric_limits<T>::has_infinity && OFMath::isinf( max_plus_one ) )
     );
     OFCHECK
     (
         OFnumeric_limits<T>::lowest() <= lowest_minus_one ||
-        ( OFnumeric_limits<T>::has_infinity && OFStandard::isinf( lowest_minus_one ) )
+        ( OFnumeric_limits<T>::has_infinity && OFMath::isinf( lowest_minus_one ) )
     );
     OFCHECK( ( OFnumeric_limits<T>::lowest() == OFnumeric_limits<T>::min() ) || !OFnumeric_limits<T>::is_integer );
 }
@@ -27,7 +28,7 @@ static void checkMinMax()
 template<typename T>
 static OFTypename OFenable_if<OFnumeric_limits<T>::has_quiet_NaN>::type checkNaN()
 {
-    (OFStandard::isnan)( OFnumeric_limits<T>::quiet_NaN() );
+    (OFMath::isnan)( OFnumeric_limits<T>::quiet_NaN() );
 }
 
 template<typename T>
@@ -39,7 +40,7 @@ static OFTypename OFenable_if<!OFnumeric_limits<T>::has_quiet_NaN>::type checkNa
 template<typename T>
 static OFTypename OFenable_if<OFnumeric_limits<T>::has_infinity>::type checkInfinity()
 {
-    (OFStandard::isinf)( OFnumeric_limits<T>::infinity() );
+    (OFMath::isinf)( OFnumeric_limits<T>::infinity() );
 }
 
 template<typename T>
index d62c037eac2036610e8c21089a2fed0f36b27c56..637e7f46bd6ef158e57b74da515610b1aefe9bfe 100644 (file)
@@ -256,3 +256,40 @@ OFTEST(ofstd_OFStandard_removeRootDirFromPathname)
     OFCHECK_EQUAL(result.getCharPointer(), nullPtr);
     OFCHECK(OFStandard::removeRootDirFromPathname(result, nullPtr, nullPtr).good());
 }
+
+
+OFTEST(ofstd_safeSubtractAndAdd)
+{
+  // --------------- Subtraction ----------------
+
+  unsigned int a = 1;
+  unsigned int b = 2;
+  // check whether underflow occurs (it should)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, 1);
+
+  a = OFnumeric_limits<unsigned int>::max();
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether no underflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected
+  OFCHECK_EQUAL(a, 1);
+
+  // --------------- Addition ----------------
+
+  a = OFnumeric_limits<unsigned int>::max()-1;
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether overflow occured (it should)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max()-1);
+
+  b = 1; // a still equals max-1
+  // check whether no overflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected.
+  // dividing and then multiplying by 2 is required since max may be be an
+  // odd number so that max/2 is rounded to the floor number.
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max());
+}